Maison > Article > base de données > Comment récupérer tous les nœuds enfants dans une structure de données hiérarchique avec PHP et MySQL ?
Récupération de données hiérarchiques avec MySQL et PHP
Récupérer des données hiérarchiques à partir d'une base de données peut être difficile, en particulier lors de l'utilisation d'un modèle de données de liste de contiguïté. Cette question cherche à résoudre ce problème en créant une fonction qui renvoie tous les nœuds enfants, petits-enfants, etc., sous un parent spécifié.
Construire un arbre hiérarchique
Tout d'abord, le code PHP fourni récupère les données d'une table MySQL et les stocke dans un tableau associatif. Le modèle de données de liste de contiguïté représente la hiérarchie en stockant les relations parent-enfant dans une seule colonne (c'est-à-dire parent_id).
Pour transformer ces données en une structure arborescente, la fonction buildtree() parcourt le tableau de manière récursive, en associant chaque L'ID du nœud avec ses données et la création d'un tableau imbriqué avec des enfants comme éléments.
Récupération des nœuds sous un parent
La fonction fetch_recursive() est conçue pour récupérer tous les nœuds enfants sous un parent spécifié. Il parcourt la structure arborescente, en commençant à l'ID parent spécifié. Si l'ID parent d'un nœud correspond à l'ID parent spécifié, il ajoute les données du nœud au tableau de résultats et procède à l'exploration des nœuds enfants.
Exemple d'utilisation
Pour démontrer le fonctionnalité, le code PHP suivant construit une arborescence et récupère les nœuds enfants sous un ID spécifique :
<?php $data = [ ['id' => 1, 'name' => 'Electronics', 'parent_id' => 0], ['id' => 2, 'name' => 'Televisions', 'parent_id' => 1], ['id' => 3, 'name' => 'Portable Electronics', 'parent_id' => 1], // ... additional data ]; $tree = buildtree($data); $child_nodes = fetch_recursive($tree, 3); foreach ($child_nodes as $node) { echo $node['name'] . '<br>'; }
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!