2011-12-17 51 views
0

我正在创建一个函数,该函数将查找数组中的最大值。不过,说我有这样的例子,给出了阵列和非阵列中的最大值

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,因为它是阵列中的最高值。任何见解?谢谢。

+1

第一平坦化阵列。 – 2011-12-17 04:31:28

回答

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; 
} 

的改性而成它递归。

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