我有类似这样的商店结帐功能:
$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
,因为它来自用户(而且直到结帐时我才对其进行验证),因此我需要在插入数据库之前对它进行检查。
因此,执行两次循环将意味着两次查询数据库。
答案 0 :(得分:0)
这是一个可能的解决方案
$total = array_reduce($shoppingCartItem,
function($carry,$item) {
return $carry + $item->price*$item->qty;
}
);
$min_delivery = 25;
if ($total > $min_delivery) {
...
}