2010-10-25 24 views
0

J'ai une structure ArrayObject qui est assez complexe à produire, elle peut/et consiste en plusieurs niveaux de relation, par ex. Parent -> Enfant -> Enfants -> Enfant etc.Itérer sur ArrayObject à plusieurs niveaux() pour afficher la vue hiérarchique à l'écran

Les structures comme celle-ci sont assez complexes à utiliser lorsque vous utilisez une boucle foreach, for ou while. J'ai regardé dans Iterators SPL et je pense que cela peut être utilisé. Je ne suis pas très familier avec l'ensemble du concept, donc tout conseil sur la mise en boucle sur plusieurs niveaux serait bien reçu.

Merci

+0

Qu'est-ce que vous cherchez à accomplir? Voulez-vous des conseils de base sur l'itération sur la profondeur, ou quelque chose de plus spécifique concernant un problème réel que vous rencontrez? – salathe

Répondre

0

Dans mon expérience, vous devriez simplement utiliser un appel de fonction récursif. Je veux dire par là que vous faites simplement une fonction qui fait ce que vous voulez, mais que vous avez une boucle while à la fin de la fonction qui boucle les enfants et appelle la fonction à nouveau sur chaque enfant. De cette façon, vous déclenchez la fonction sur chaque enfant de l'objet original.

+0

laurencek J'ai traité le problème de cette façon par le passé, mais SPL semble avoir des classes déjà en place pour le gérer, par exemple. RecursiveArrayIterator() et RecrusiveIteratorIterator(). –

+0

Je les ai regardés brièvement mais je ne les ai jamais utilisés. Les appels de fonction récursifs ont toujours été suffisants pour mes besoins. –