给出了数组和非数组中的最大值

时间:2011-12-17 04:26:19

标签: php arrays nested

我正在创建一个函数,用于查找数组中的最大值。但是,假设我有这个例子,

function MaxArray($arr)
{
    return max($arr);
}
$arr = array(array(141,151,161), 2, 3, array(101, 202, array(303,404)));
print_r(MaxArray($arr));

这将返回值Array ( [0] => 141 [1] => 151 [2] => 161 )

我想要的输出是获得404,因为它是数组中的最高值。任何见解?感谢。

2 个答案:

答案 0 :(得分:2)

作为功能的修改

function MaxInArray ($arr) {
    $m = NULL;
    foreach ($arr as $v) {
        if (is_array($v)) $v = MaxInArray($v);
        if (is_null($m) || $v > $m) $m = $v;
    }
    return $m;
}

让它递归。

答案 1 :(得分:0)

PHP具有许多内置的功能,用于展平或递归遍历数组,例如array_walk_recursiveDocs。例如,与anonymous functionDocs结合使用这可以通过一些小代码来解决:

array_walk_recursive($arr, function($v) use(&$max) {$max = max($v, $max);});

var_dump($max); # int(404)

Demo