[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать наибольшее значение многомерного массив
Jaguar556
Добрый день.
Вот начал изучать РНР. Учусь с разных источников.
Ради интереса запросил у одной фирмы задание на должность джуниора. Так там одним из заданий было узнать наибольшее значение у многомерного массива. Прошерстил поиск ничего не нашел. Вот мой набросок как по моему мнению это должно быть:

function Maximum($array)
{
foreach ($array as $val)
$max= $val[0];
if ($max > $val)
{ $max = $val;
if (is_array($val))
{ $max = Maximum($array); }
}
echo $max;
}

Но он почемуто не работает... А почему не могу понять...Даже если (а я больше уверен) что рекурсия написана неправильно, то почему не работает поиск по 1 уровню массива?



Спустя 5 минут, 30 секунд (28.06.2012 - 19:12) vital написал(а):

function Maximum($array) {
$max = $array[0];
foreach ($array as $val) {
if (is_array($val)) {
$max = Maximum($array);
continue;
} else {
if ($max > $val) {
$max = $val;
}
}
}

return $max;
}

Спустя 9 минут (28.06.2012 - 19:21) pak написал(а):
а можно пример массива.

Спустя 25 минут, 42 секунды (28.06.2012 - 19:47) Jaguar556 написал(а):
$array = array(1,2,array(11,12,13),3,4,array(21,22,23,array(231),),);
Любой многомерный массив, с любым количеством уровней.

2 vital выдает ошибку Warning: Invalid argument supplied for foreach() и никак не могу ее исправить, да и функция почемуто ничего не считает...

Спустя 41 минута, 24 секунды (28.06.2012 - 20:28) Placido написал(а):
$array = array(1,2,array(11,12,13),3,4,array(21,22,23,array(231),),);

function array_max($array)
{
static $max;
foreach($array as $sub)
{
if( ! is_array($sub))
{
$max = ($max >= $sub) ? $max : $sub;
}
else
{
array_max($sub);
}
}

return $max;
}

echo array_max($array);//231

Спустя 16 часов, 58 минут, 37 секунд (29.06.2012 - 13:27) Jaguar556 написал(а):
Спасибо! буду разбираться smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.