【问题标题】:How to put the result of foreach loop in an Array and get the highest value如何将foreach循环的结果放入数组中并获得最大值
【发布时间】:2014-05-15 14:53:00
【问题描述】:

在这个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 = ???;
?>

我想通过 echo $highest 显示最高值

【问题讨论】:

  • 您要计算实际房间数吗?
  • 您可以使用max($array) 从您的数组中获取最大值。

标签: php mysql sql arrays foreach


【解决方案1】:

获取$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() 函数来找到给定数组中的最大值。去this manual你就清楚了。

【讨论】:

    【解决方案2】:

    假设 sumqty 接受 'arrival'、'departure' 和 'room 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;
    

    一般的想法是,每次找到更高的值时,将之前的最高值替换为新的更高值。

    不需要额外的数组来完成这个!使用数组来解决这个问题的解决方案是不必要的复杂。 (编辑:“复杂”是一个糟糕的单词选择;如果使用额外的数组,程序效率会稍低)

    【讨论】:

      【解决方案3】:

      是的,您可以使用数组。如果 $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);
      

      【讨论】:

        猜你喜欢
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        相关资源
        最近更新 更多