Maison > Article > développement back-end > Comment construire une structure arborescente hiérarchique à partir d'un tableau plat en PHP ?
Construire une structure arborescente à partir d'un tableau plat en PHP
Problème :
Vous avez un tableau plat composé d'éléments avec des champs « id » et « parent_id », où chaque élément peut avoir au plus un parent et zéro ou plusieurs enfants. Lorsque 'parent_id' vaut 0, l'élément est un élément de niveau racine. Le but est de restructurer ce tableau plat en un arbre hiérarchique avec des relations enfant-parent.
Solution :
La fonction fournie, buildTree(), accomplit efficacement cette tâche en parcourant le tableau d'entrée et en construisant de manière récursive la structure arborescente. Chaque élément de l'arborescence de sortie contient son ID, son ID parent et un tableau d'éléments enfants.
Implémentation :
function buildTree(array &$elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[] = $element; unset($elements[$element['id']]); } } return $branch; }
Le « non défini » Appel :
Dans le code ci-dessus, l'appel unset() est crucial pour maintenir la structure hiérarchique. Il supprime les éléments traités du tableau d'entrée d'origine, garantissant que les éléments ne sont pas dupliqués dans l'arborescence.
Exemple :
Considérez le tableau d'entrée fourni :
[_319_] => [...], [_320_] => [...], [_321_] => [...], [_322_] => [...], [_323_] => [...], [_324_] => [...], [_325_] => [...]
Après le traitement, l'arborescence de sortie maintient les relations parent-enfant :
[_319_] => [...], [_320_] => [ 'id' => '_320_', 'parent_id' => 0, 'children' => [ [_321_] => [...], [_325_] => [...] ] ], [_323_] => [ 'id' => '_323_', 'parent_id' => 0, 'children' => [ [_324_] => [...] ] ]
Par conséquent, le La fonction buildTree() vous permet de transformer un tableau plat d'éléments avec des relations parent-enfant en un arbre hiérarchique structuré en PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!