Maison > base de données > tutoriel mysql > Comment récupérer les nœuds enfants, petits-enfants et descendants à l'aide de PHP avec les résultats de requête MySQL ?

Comment récupérer les nœuds enfants, petits-enfants et descendants à l'aide de PHP avec les résultats de requête MySQL ?

Patricia Arquette
Libérer: 2024-11-06 15:02:02
original
769 Les gens l'ont consulté

How to Fetch Child, Grandchild, and Descendant Nodes Using PHP with MySQL Query Results?

Obtenir les nœuds enfants, petits-enfants et descendants à l'aide de PHP avec les résultats de la requête MySQL

Cette requête récupère les données d'une table MySQL avec une liste de contiguïté structure, où chaque ligne représente un nœud et sa relation avec son parent. L'objectif est de transformer ces données en un tableau qui inclut tous les nœuds enfants, petits-enfants et descendants sous un ID parent spécifié tout en incorporant le nœud parent lui-même.

Utilisation d'une fonction récursive : fetch_recursive

La fonction fetch_recursive parcourt le tableau de données, en commençant par l'ID parent donné, et ajoute récursivement des éléments enfants jusqu'à ce que tous les nœuds descendants aient été inclus. Voici le code de la fonction :

function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array())
{
    foreach($src_arr as $row)
    {
        if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid)
        {
            $rowdata = array();
            foreach($row as $k => $v)
                $rowdata[$k] = $v;
            $cats[] = $rowdata;
            if($row['parent_id'] == $currentid)
                $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true));
        }
    }
    return $cats;
}
Copier après la connexion

Utilisation de la fonction fetch_recursive

Pour utiliser la fonction, transmettez le tableau de données obtenu à partir de la requête à la fonction fetch_recursive et spécifiez le ID parent dont vous souhaitez récupérer les descendants. Par exemple :

$list = fetch_recursive($data, 3);
Copier après la connexion

Cela renverra un tableau avec la structure suivante, y compris le nœud parent avec l'ID 3 et tous ses descendants :

Array
(
    [0] => Array
        (
            [id] => 3
            [name] => Portable Electronics
            [parent_id] => 1
        )

    [1] => Array
        (
            [id] => 7
            [name] => Mp3 Players
            [parent_id] => 3
        )

    [2] => Array
        (
            [id] => 10
            [name] => Flash
            [parent_id] => 7
        )

    [3] => Array
        (
            [id] => 8
            [name] => CD Players
            [parent_id] => 3
        )

    [4] => Array
        (
            [id] => 9
            [name] => 2 Way Radios
            [parent_id] => 3
        )
)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal