дано максимальное значение как в массиве, так и в нем. - PullRequest
0 голосов
/ 17 декабря 2011

Я создаю функцию, которая будет искать максимальное значение в массиве. Однако, скажем, у меня есть этот пример,

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 ]

2 голосов
/ 17 декабря 2011

Как модификация вашей функции

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 голосов
/ 27 августа 2012

PHP имеет много встроенных функций для выравнивания или рекурсивного обхода массива, например, array_walk_recursive Документы .Например, в сочетании с анонимной функцией Документы это можно решить с помощью небольшого кода:

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

var_dump($max); # int(404)

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...