Итерация по многоуровневому ArrayObject() для вывода на экран иерархического представления

У меня есть структура ArrayObject, которую довольно сложно вывести, она может/и состоит из нескольких уровней отношений, например. Родитель -> Ребенок -> Дети -> Ребенок и т.д.

С подобными структурами довольно сложно работать при использовании цикла foreach, for или while. Я изучил итераторы SPL и думаю, что это можно использовать. Я немного не знаком со всей концепцией, поэтому любые советы по зацикливанию на нескольких уровнях будут хорошо приняты.

Спасибо


person Community    schedule 25.10.2010    source источник
comment
Чего вы хотите достичь? Вам нужно базовое руководство по итерации по глубине или что-то более конкретное, относящееся к реальной проблеме, с которой вы столкнулись?   -  person salathe    schedule 25.10.2010


Ответы (1)


По моему опыту, вы должны просто использовать рекурсивный вызов функции.

Под этим я подразумеваю, что вы просто создаете функцию, которая делает все, что вам нужно, но имеете цикл while в конце функции, который перебирает дочерние элементы и снова вызывает функцию для каждого дочернего элемента. Таким образом, вы запускаете функцию для каждого дочернего элемента исходного объекта.

person Coin_op    schedule 25.10.2010
comment
laurencek Я справлялся с проблемой таким образом в прошлом, но в SPL, похоже, уже есть классы для ее решения, например. RecursiveArrayIterator() и RecursiveIteratorIterator(). - person ; 25.10.2010
comment
Я бегло просматривал их, но никогда ими не пользовался. Рекурсивных вызовов функций всегда было достаточно для моих требований. - person Coin_op; 25.10.2010