2011-12-17 47 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