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


PHP - checking if one value is larger then other, storing dynamically (restaurant menu)

我有一个特定情况的菜单。有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循环更好的方法来解决这个问题?

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

$total = 0;
$prices = array();
foreach( $prices as $k => $v )
{
    $prices[] =  $v['price'];
}
$total+= max($prices);

请注意,我们可以将数组传递给max()并让它返回数组内的最大值:

如果第一个也是唯一的参数是数组,则max()返回最高的 该数组中的值。如果至少提供了两个参数,则max() 返回这些值中最大的值。