Heim  >  Artikel  >  Datenbank  >  Wie rufe ich untergeordnete, untergeordnete und untergeordnete Knoten mithilfe von PHP mit MySQL-Abfrageergebnissen ab?

Wie rufe ich untergeordnete, untergeordnete und untergeordnete Knoten mithilfe von PHP mit MySQL-Abfrageergebnissen ab?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 15:02:02738Durchsuche

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

Untergeordnete, Enkel- und untergeordnete Knoten mithilfe von PHP mit MySQL-Abfrageergebnissen abrufen

Diese Abfrage ruft Daten aus einer MySQL-Tabelle mit einer Adjazenzliste ab Struktur, in der jede Zeile einen Knoten und seine Beziehung zu seinem übergeordneten Knoten darstellt. Das Ziel besteht darin, diese Daten in ein Array umzuwandeln, das alle untergeordneten, untergeordneten und untergeordneten Knoten unter einer angegebenen übergeordneten ID umfasst und gleichzeitig den übergeordneten Knoten selbst einbezieht.

Verwendung einer rekursiven Funktion: fetch_recursive

Die Funktion fetch_recursive durchläuft das Datenarray, beginnend mit der angegebenen übergeordneten ID, und fügt rekursiv untergeordnete Elemente hinzu, bis alle untergeordneten Knoten enthalten sind. Hier ist der Funktionscode:

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

Verwenden der Funktion fetch_recursive

Um die Funktion zu verwenden, übergeben Sie das aus der Abfrage erhaltene Datenarray an die Funktion fetch_recursive und geben Sie an Eltern-ID, von der Sie die Nachkommen abrufen möchten. Zum Beispiel:

$list = fetch_recursive($data, 3);

Dies gibt ein Array mit der folgenden Struktur zurück, einschließlich des übergeordneten Knotens mit der ID 3 und aller seiner Nachkommen:

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

Das obige ist der detaillierte Inhalt vonWie rufe ich untergeordnete, untergeordnete und untergeordnete Knoten mithilfe von PHP mit MySQL-Abfrageergebnissen ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn