【问题标题】:Get the max value获取最大值
【发布时间】:2020-08-21 06:15:15
【问题描述】:

我对 PHP 还是很陌生,我被困在以下场景中。我有一个包含一些值的数组,我想获取数组集中的最大值。

例如:

$array = array(
     0 => array(
        '1' => '123',
        '2' => '120',
        '3' => '30',
        '4' => '150'
     ),
     1 => array( 
        '1' => '123',
        '2' => '122',
        '3' => '30',
        '4' => '158'
     ),
     2 => array(
        '1' => '123',
        '2' => '129',
        '3' => '300',
        '4' => '150'
     )
);

我期望的值是 300。 我已经尝试了以下代码,但我不知道如何从所有子数组中获取最大值。

$max = 0;
foreach( $array as $k => $v ){
  //this is where i need help

 }

我们将不胜感激任何形式的帮助。

【问题讨论】:

    标签: php arrays multidimensional-array


    【解决方案1】:

    您可以先使用array_merge(...$array) 展平您的数组,然后使用max() 函数:

    $new_array = array_merge(...$array);
    echo max($new_array);
    

    Demo

    【讨论】:

    • 只是为了澄清。为什么要在数组合并中使用 ...$array
    • here
    • array_merge() 接受数组列表作为参数,array_merge(...$array) 表示$array 包含需要合并在一起的数组列表。
    【解决方案2】:

    我采用了@Hirumina 的解决方案,如果$y 是> $max,则设置$max = $y

    $max = 0;
    foreach( $array as $k => $v ) {
        foreach($v as $x => $y) {
            if($y > $max){
                $max = $y;
            }
        }
    }
    echo $max;
    

    【讨论】:

      【解决方案3】:
      $new_array = array_map(function($value){
          return max($value);
      }, $array);
      echo max($new_array);
      

      此处的array_map 函数将从单个$array 中获取最大值并存储在$new_array 中。 然后 ma​​x($new_array) 会给你最大值。

      【讨论】:

      • 不建议在 Stack Overflow 上使用纯代码响应。请考虑添加解释此代码如何帮助解决 OP 问题的 cmets。请阅读当有人answers您的问题时该怎么做。
      • 能否请您添加一些评论或解释它是怎么回事。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      相关资源
      最近更新 更多