如何将 foreach 循环的结果放在数组中并获得最大值


How to put the result of foreach loop in an Array and get the highest value

在这个foreach循环中,我放了一个返回房间数量的函数,每个$sumqty['room_qty']都有不同的值,我的问题是,我想获得$sumqty['room_qty']的最高值,我把它放在数组中吗?如何? 任何帮助将不胜感激。

<?php
    foreach($reservation as $res){
    $sumqty = sumqty($res['arrival'],$res['departure'],$res['room_id']);
    $sumqty['room_qty'];
    }
    $highest = ???;
?>

我想通过回显显示最大值 $highest

是的,您可以使用数组。如果$sumqty['room_qty']是数值,则以下内容将起作用:

$allquantities=array();
foreach($reservation as $res){
    $sumqty = sumqty($res['arrival'],$res['departure'],$res['room_id']);
    $allquantities[]=$sumqty['room_qty'];
}
$highest = max($allquantities);

假设 sumqty 接受"到达"、"离开"和"房间 ID",并返回一个数组,其中键"room_qty"映射到某个整数:

<?php
$highest = -1000000000; //some really, really small number
foreach ($reservation as $res) {
    $sumqty = sumqty($res['arrival'],$res['departure'],$res['room_id']);
    if ($sumqty['room_qty'] > $highest) {
        $highest = $sumqty['room_qty'];
    }
}
echo $highest;

一般的想法是,每次找到更高的值时,都会用新的更高值替换以前的最高值。

无需额外的阵列即可完成此操作!使用数组来解决此问题的解决方案过于复杂。(编辑:"复杂"是一个糟糕的单词选择;如果使用额外的数组,则程序的效率略低)

获取 $sumqty['room_qty'] 的所有值的数组,$room_qty[]如本例所示。

<?php
    $room_qty = array();
    foreach($reservation as $res){
    $sumqty = sumqty($res['arrival'],$res['departure'],$res['room_id']);
    $room_qty[] = $sumqty['room_qty'];
    }
    $highest = max($room_qty);
?>

有了数组后,您可以使用 max() 函数在给定数组中找到最大值。仔细阅读本手册,您将清楚它。