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
Patricia Arquetteoriginal
2024-11-06 15:02:02791parcourir

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;
}

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);

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
        )
)

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