PHP仅在结果满足条件时才执行代码

时间:2018-09-05 15:52:28

标签: php foreach

我有类似这样的商店结帐功能:

    $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;
    }

是否存在任何允许foreach循环仅发生if ($total > $min_delivery)的php函数。

否则,唯一的方法是执行两次foreach,一次仅计算$total,然后if ($total > $min_delivery)再进行一次foreach插入数据库。 / p>

* EDIT-有关为什么我想要其他方法而不是两个循环的一些详细信息:

问题在于,我不能信任购物车中的$item->price,因为它来自用户(而且直到结帐时我才对其进行验证),因此我需要在插入数据库之前对它进行检查。

因此,执行两次循环将意味着两次查询数据库。

1 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案

$total = array_reduce($shoppingCartItem,
    function($carry,$item) {
        return $carry + $item->price*$item->qty;
    }
);
$min_delivery = 25;
if ($total > $min_delivery) {
    ...
}