Код выполнения Php, только если результат соответствует условию - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть функция оформления заказа в магазине:

    $min_delivery = 25;
    foreach ($shoppingCartItem as $item) {
     $insert->name = $item->name;
     $insert->price = $item->price;
     $insert->quantity = $item->qty;
     $insert->save();
     $total += $item->price*$item->qty;
    }

Есть ли функция php, которая позволяла бы циклу foreach выполняться только if ($total > $min_delivery).

Или единственный способ - сделать foreach дважды, один раз для вычисления $total, затем if ($total > $min_delivery) сделать секунду foreach для вставки в базу данных.

* РЕДАКТИРОВАТЬ - некоторые подробности о том, почему я хочу использовать другой способ вместо двух циклов:

Проблема в том, что я не могу доверять $item->price из корзины покупок, потому что он исходит от пользователя (и я не проверяю его до оформления заказа), поэтому мне нужно проверить его по базе данных перед вставкой.

То есть выполнение цикла дважды означало бы запрос базы данных дважды.

1 Ответ

0 голосов
/ 05 сентября 2018

Вот возможное решение

$total = array_reduce($shoppingCartItem,
    function($carry,$item) {
        return $carry + $item->price*$item->qty;
    }
);
$min_delivery = 25;
if ($total > $min_delivery) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...