如何使用php查找多维数组中每个数组的最大值

时间:2016-08-18 08:09:57

标签: php arrays

我有一个多维数组:

   array (
        array (
            array ( 
                1, 
                3, 
                4
            ),
            array (
                1,
                2,
                3
            )
        )
    )

我希望获得嵌套数组的最高值。

即。值4和3。

3 个答案:

答案 0 :(得分:0)

您可以使用array_map()max()函数从多维数组中获取最大值..

$arrayValues = array ( 0 => array ( ),1 => array ( 0 => 1, 1 => 3, 2 => 4), 2 => array ( 0 => 1, 1 => 2 ,2 => 3 ));
$maxValues = array_map(function($value){ return max($value);} ,$arrayValues);
echo "<pre>"; print_r($maxValues);

这会给你

Array
(
    [0] => 
    [1] => 4
    [2] => 3
)

由于您的第一个索引在数据数组中为空,您可以使用array_filter()从数组中删除空元素

答案 1 :(得分:0)

您可以使用此代码:

// sample data
$input  = [[], [1,3,4], [1,2,3]];
// get max values of non-empty arrays
$output = array_map('max', array_filter($input));
// output result
print_r($output);

输出是:

Array
(
    [1] => 4
    [2] => 3
)

array_filter调用将返回原始数组,空子数组元素除外。然后array_mapmax一起用作回调,以从剩余的子数组中获取最大值。

答案 2 :(得分:0)

您可以循环遍历多维数组,然后以数字方式对每个内部数组进行排序。然后,在循环内,筛选排序子数组的第一个元素(应该是最高数字)并将其推送到另一个创建的数组,以保持最大值。以下是:

    <?php

        $max    = [];
        $arr    = [
            [],
            [8, 0, 11, 3, 4],
            [1, 15, 2, 13, 7],
        ];


        // LOOP THROUGH MULTI-DIMENSIONAL ARRAY
        // AND SORT EACH SUB-ARRAY BY MAX-VALUE (DESC)
        foreach($arr as $key=>&$data){
            if(is_array($data) && !empty($data)){
                rsort($data, SORT_NUMERIC);
                $max[]  = array_splice($data, 0, 1)[0];
            }
        }
        var_dump($max);

        // PRODUCES:
        array (size=2)
          0 => int 11
          1 => int 15