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 ?

Comment récupérer tous les nœuds enfants dans une structure de données hiérarchique avec PHP et MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-06 12:12:02292parcourir

How to Retrieve All Child Nodes in a Hierarchical Data Structure with PHP and 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!

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