Comment créer un tableau multidimensionnel à partir de données SQL stockées hiérarchiquement en utilisant la méthode de la liste de contiguïté?

StackOverflow https://stackoverflow.com/questions/1273972

Question

Données hiérarchique de SQL

Liste contiguïté Modèle

Dans mon modèle, j'ai une série d'objets, chacun stockés avec leur ID parent. J'utilise le modèle de liste contiguïté comme ma méthode de hiérarchie.

Tous les exemples de liste contiguïté simplement là-bas et puis sortie. Aucun essayer de créer un tableau à plusieurs dimensions à partir du jeu de résultats.

---------------
| id | parent |
---------------
| 1  | NULL   |
| 2  | 1      |
| 3  | 1      |
| 4  | 2      |
| 5  | 2      |
| 6  | 5      |
---------------

Objet

J'ai créé une variable tableau dans ma classe appelée « enfants » et que vous souhaitez ajouter un objet enfant chaque fois que je trouve un enfant de la requête db.

Création d'un tableau à l'intérieur de chaque objet et le stockage des objets suivants y sent mal. je ne peux pas créer le tableau d'objets séparément? En procédant ainsi, peut le rendre difficile à traverser le tableau quand je reçois dans la vue.

Je sens que je suis, j'aborde ce problème dans le mauvais sens?

Y at-il un moyen plus intelligent d'utiliser des tableaux PHP que cela?

Était-ce utile?

La solution

Le tableau d'enfants ne doit pas faire partie d'une classe; vous pouvez toujours faire un arbre ad hoc où un nœud est un hachage contenant un objet et ses enfants. Je ne sais pas PHP, mais il devrait ressembler à:

{
    object => $row1,
    children => [
        {
            object => $row2,
            children => [ ... ],
        }, {
            object => $row3,
            children => [],
        }
    ]
}

Autres conseils

Avez-vous besoin d'être un tableau? Une option pourrait être d'avoir les objets à mettre en œuvre une structure hiérarchique récursive comme celui-ci:

http://www.php.net/~helly /php/ext/spl/classRecursiveArrayIterator.html

Vous pouvez ajouter les objets que l'enfant et voyager encore la structure d'une manière semblable à un tableau.

La documentation sur SPL est rare, mais il fournit quelques bonnes structures franchissables, les interfaces et les classes. Quelques bons tutoriels existent sur le web à ce sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top