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

придавить массив первым. –

ответ

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

Смежные вопросы