PHP - 检查一个值是否大于其他值,动态存储(餐厅菜单)

时间:2016-02-17 14:37:07

标签: php

我有一个特定情况的菜单。有4-5个选项,客人可以选择创建他们的餐点。但是,对于这一部分,只有最高价的项目应计入总数,而不是其他部分。

价格通过AJAX更新,因此如果选择其中一个项目(通过复选框),则会自动解析所选项。

这是我的问题:

$max = 0;

foreach ($prices as $k => $v) {
  if ($v['ingredienttype_id'] == '1' && $v['price'] > $max) { $max = $v['price']; }
}

foreach ($prices as $k => $v){
  if ($v['ingredienttype_id'] == '1' && $v['price'] < $max){ $prices[$k]['price'] = '0'; }
}

因此,在第一个foreach循环中,我正在检查提交的哪个项目具有最大价格,在第二个中,我将所有其他项目设置为$ 0。然而,这似乎“笨拙”并且有问题。

首先,初始项目从未注册,不会更新价格。

其次,当添加一个项目(即$ 9),然后删除并添加另一个项目(即$ 7)时,第二项不计入总数,因为$ max设置为$ 9。有没有更好的方法来处理这个我的双foreach循环?

1 个答案:

答案 0 :(得分:0)

为什么不重构代码以使用max()自动生成总计?这样,你不需要将其他价格重置为0.例如,这样的东西会更具可读性:

?LARGE_LIST

请注意,我们可以将数组传递给@module_attribute并让它返回数组中的最大值:

  

如果第一个且唯一的参数是数组,$total = 0; $prices = array(); foreach( $prices as $k => $v ) { $prices[] = $v['price']; } $total+= max($prices); 将返回最高值   该数组中的值。如果提供至少两个参数,max()   返回这些值中最大的值。