Construire une structure arborescente à partir d'un tableau plat en PHP
Convertir un tableau plat en une structure arborescente hiérarchique peut être une tâche utile dans divers scénarios de programmation. Dans cet article, nous abordons le problème de la construction d'un arbre à partir d'un tableau avec des éléments représentant des nœuds, où chaque nœud a un ID et un ID parent.
Pour réaliser cette conversion, nous utilisons une fonction récursive appelée buildTree. Cette fonction parcourt le tableau et construit progressivement la structure arborescente. À chaque appel récursif, il se concentre sur un nœud parent spécifique et rassemble tous ses nœuds enfants dans un sous-arbre. Une fois que tous les nœuds enfants sont ajoutés au sous-arbre, il crée de manière récursive des sous-arbres pour les nœuds enfants et les attache au nœud parent.
Le code PHP suivant démontre l'implémentation de cet algorithme de construction d'arborescence :
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['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
Dans cette fonction, nous parcourons le tableau et examinons la valeur parent_id de chaque élément. S'il correspond au paramètre $parentId, cela signifie que nous avons actuellement affaire à un nœud enfant de $parentId. Nous construisons ensuite de manière récursive le sous-arbre du nœud enfant en appelant à nouveau la fonction buildTree avec son ID comme argument $parentId.
Une fois le sous-arbre du nœud enfant actuel construit, nous l'ajoutons au tableau $branch avec l'élément courant. Pour éviter les entrées en double, nous supprimons également l'élément actuel du tableau d'origine en utilisant unset().
Ce processus se poursuit de manière récursive jusqu'à ce que tous les éléments aient été attribués au sous-arbre approprié. Enfin, la fonction renvoie le tableau $branch, qui représente l'arbre construit.
En utilisant cette approche récursive, vous pouvez convertir efficacement votre tableau plat en une structure arborescente hiérarchique, vous permettant de travailler avec des relations complexes entre les données. éléments de manière structurée et organisée.
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!