Fonction récursive pour générer un tableau multidimensionnel à partir du résultat d'une base de données
Problème :
Construire hiérarchiquement des tableaux imbriqués à partir d'une table de résultats plate , où chaque ligne représente un élément avec son parent ID.
Solution :
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;
}
}
return $branch;
}
$tree = buildTree($rows);
Explication :
L'algorithme construit de manière itérative une structure arborescente hiérarchique en utilisant la récursivité :
- Il initialise un tableau vide $branch pour stocker le niveau actuel de l'arbre.
- Il parcourt les éléments et vérifie si le parent_id d'un élément correspond au $parentId spécifié.
- Si une correspondance est trouvée, cela signifie que l'élément est un enfant du parent actuel et doit être ajouté à la branche $.
- Il appelle récursivement la fonction buildTree avec l'identifiant de l'élément comme nouveau $parentId pour trouver son enfants.
- Si des enfants sont trouvés, ils sont ajoutés en tant que sous-tableau à l'élément actuel.
- Après avoir traité tous les enfants, le tableau $branch est renvoyé pour représenter le niveau suivant de la hiérarchie.
- L'appel initial à buildTree avec un $parentId initial de 0 récupère les éléments racine de la hiérarchie, et les appels récursifs remplissent le fichier imbriqué. structure.
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!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn