J'ai une structure d'objet en forme d'arbre qui se compose de deux types d'objets:Conversion de la structure de l'objet en forme d'arbre dans un tableau et interating la chose
- objet de la classe
Category
objet
- de classe
CategoryLink
la structure est la suivante:
l'histoire commence par un tableau de Categories
qui n'ont pas parent
Chaque Category
a quelques propriétés sans importance et quelques importants:
$parent
- contenant un identifiant d'un parent Category
,
$children
- containin un tableau de childern Categories
(peut être vide si la catégorie n'a pas childern bien sûr).
$links
- contenant un tableau de CategoryLinks
(peut-être aussi vide)
Alors que __constructing
un Category
, je cherche l'enfant existant Categories
et CategoryLinks
, et s'il y en a, je crée les instances et les ajouter à $children
et $links
, donc cette procédure se répète pour les enfants et leurs enfants et ainsi de suite, jusqu'à ce qu'une catégorie sans enfants soit atteinte.
Alors, que cette procédure fait est qu'il crée essentiellement un arbre de Categories
et leur Links
. Cela va assez bien, jusqu'à ce que je veux sortir cette structure arborescente (en utilisant Smarty
), et je ne suis pas sûr de savoir comment itérer par dessus la bonne façon. sortie souhaitée est quelque chose comme ça
Parent1 -its unimportant properties
-Child1 - its unimportant properties
-Child2 -...
-Child2's Child1
-Child2's Child2
-Child3
Parent2
-Child1
-Child1's Child1
-Child2
Parent3
...
Je ne suis pas sûr de son mieux pour itérer dessus en PHP et le convertir en un tableau multidimensionnel et itérer sur dans Smarty, ou le faire tout le chemin Smarty.
* Notez que je ne mentionne pas les objets de la classe CategoryLink
, comme Category
ne peut contenir que tableau unidimensionnel d'eux, donc itérer sur eux est assez facile, je ne suis pas sûr de savoir comment itérer sur toute la structure.
Quel est le meilleur | bonne façon de le faire?
Je ne sais pas ce qu'est Smarty, mais cela ressemble à une recherche en profondeur classique? Il est trivial d'implémenter de manière récursive (http://en.wikipedia.org/wiki/Depth-first_search) – Stephen
+1 Pourquoi les bonnes questions n'obtiennent-elles jamais de Upvotes, alors que les stupides obtiennent? – NikiC