Plat Tableau PHP Hiérarchie de l'Arbre
J'ai un tableau avec les clés suivantes
id
parent_id
name
Un exemple de tableau:
array(7) {
[0]=>
array(3) {
["id"]=>
string(1) "4"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 4"
}
[1]=>
array(3) {
["id"]=>
string(1) "5"
["parent_id"]=>
string(1) "1"
["name"]=>
string(19) "Second Level Page 1"
}
[2]=>
array(3) {
["id"]=>
string(1) "6"
["parent_id"]=>
string(1) "2"
["name"]=>
string(19) "Second Level Page 2"
}
[3]=>
array(3) {
["id"]=>
string(1) "7"
["parent_id"]=>
string(1) "5"
["name"]=>
string(18) "Third Level Page 1"
}
[4]=>
array(3) {
["id"]=>
string(1) "3"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 3"
}
[5]=>
array(3) {
["id"]=>
string(1) "2"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 2"
}
[6]=>
array(3) {
["id"]=>
string(1) "1"
["parent_id"]=>
string(1) "0"
["name"]=>
string(16) "Top Level Page 1"
}
}
Ce que je voudrais faire, c'est afficher une arborescence à l'aide de ce tableau, le code que j'ai pour le moment est de produire:
Top Level Page 4
--Second Level Page 1
---Second Level Page 2
----Third Level Page 1
Top Level Page 3
Top Level Page 2
Top Level Page 1
Idéalement j'en ai besoin pour produire le résultat ci-dessous, mais avec un nombre illimité de niveaux:
Top Level Page 4
-Second Level Page 1
-Second Level Page 2
--Third Level Page 1
Top Level Page 3
Top Level Page 2
Top Level Page 1
Le code que j'ai pour l'instant est:
$level = 1;
foreach ($data as $row) {
if ($row['parent_id'] == 0) {
echo $row['name'] . '<br/>';
} else {
$level++;
foreach ($data as $m) {
if ($m['parent_id'] === $row['parent_id']) {
$c = 0;
$append = '';
while ($c < $level) {
$append.="-";
$c++;
}
echo $append . $row['name'] . '<br/>';
}
}
}
}
}
Si quelqu'un pouvait me donner quelques conseils sur la façon de réaliser cela, il serait très apprécié.
J'ai trouvé une solution ici: Créer des listes de liste de tableau PHP pour le menu déroulant, sélectionnez le champ
"Vouliez-vous dire: la récursivité"?
stackoverflow.com/questions/8840319/... ou stackoverflow.com/questions/4216875/... ou stackoverflow.com/questions/2915748/...
stackoverflow.com/questions/8840319/... ou stackoverflow.com/questions/4216875/... ou stackoverflow.com/questions/2915748/...
OriginalL'auteur Tommy Arnold | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser la récursivité.
Voici un exemple de code:
Vous pouvez le tester à: http://phpfiddle.org/main/code/1qy-5fj
Ou si vous voulez le format exact:
Le test: http://phpfiddle.org/main/code/jw3-s1j
Grande réponse, mais si pas d'autres enfants, puis ajoute un vide élément ul.
Corrigé la solution pour éviter vide élément ul
OriginalL'auteur Code-Source
Vous pouvez utiliser FlatToTreeConverter classe Gears helper library:
OriginalL'auteur Cosmologist
Ne sais pas si vous avez trouvé encore de réponse, mais je cherchais la même solution aujourd'hui et finit par faire ma propre solution. Le code ci-dessous est la classe j'ai juste créé, et il fonctionne avec PHP les tableaux et les objets et est récursif pour un nombre illimité de dimensions.
GitHub
https://github.com/DukeOfMarshall/PHP-Array-Heirarchy-DisplayUn exemple simple de l'utilisation de ce code serait:
Il y a d'autres options qui peuvent être définies en tant que bien, mais c'était juste un tout droit jusqu'heirarchal affichage d'un tableau ou d'un objet.
OriginalL'auteur The Duke Of Marshall שלום