[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глубина рекурсии
Faydaen
Всем хай!
Есть функция которой передается массив, причем массив может быть многомерным, ассоциативным и вообще сложным, и эта функция должна вывести этот массив.
Ну например вот такой:

$arr['Фрукты'] = array('Яблоко','Груша','Ананас');
$arr['Животные'] = array('птицы','насекомые','млекопитающие');
$arr['Животные']['птицы'] = array('сова','утка','аист');
$arr['Животные']['насекомые'] = 'стрекоза';
$arr['Животные']['млекопитающие'] = array('слон','динозавр'=>'птеродактиль','бегемот');




и вот функция которой это массив будет предан.


public function showJson($jsonArray){
foreach ($jsonArray as $key=>$jsonSting){
if (is_string($jsonSting)){
$jsonForm .= "$key => $jsonSting <br>";
}
else
{
$jsonForm .= $this->showJson($jsonSting);
}
}

return $jsonForm;

}

и эта функция выводит вот это
Цитата
0 => Яблоко
1 => Груша
2 => Ананас
0 => птицы
1 => насекомые
2 => млекопитающие
0 => сова
1 => утка
2 => аист
насекомые => стрекоза
0 => слон
диназавр => прирадактель
1 => бегемот

то-есть без отступов все выводит.
а я хочу чтобы каждый раз когда она печатала подмассив она делала отступ.. а для этого как я понял нужно узнать глубину рекурсии. И вот собственно вопрос, как узнать глубину рекурсии функции?



Спустя 12 часов, 45 минут, 32 секунды (31.12.2010 - 09:19) linker написал(а):
public function showJson($jsonArray, $Level = 0)
{
foreach ($jsonArray as $key=>$jsonSting)
{
if (is_string($jsonSting))
$jsonForm .= str_repeat(' ', $Level) . "$key => $jsonSting <br>";
else
$jsonForm .= $this->showJson($jsonSting, ++ $Level);
}
return $jsonForm;
}
Намек понят? ;)

Спустя 1 час, 37 минут, 50 секунд (31.12.2010 - 10:57) Guest написал(а):
echo print_r($jsonArray, true);
Быстрый ответ:

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