Итериране на 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
laurenček Справих се с проблема по този начин в миналото, но SPL изглежда вече има класове, за да се справи с него, напр. RecursiveArrayIterator() и RecrusiveIteratorIterator(). - person ; 25.10.2010
comment
Разгледах ги за кратко, но никога не съм ги използвал. Рекурсивните извиквания на функции винаги са били достатъчни за моите изисквания. - person Coin_op; 25.10.2010