Heim  >  Artikel  >  Datenbank  >  Wie rufe ich mit PHP und MySQL alle untergeordneten Knoten in einer hierarchischen Datenstruktur ab?

Wie rufe ich mit PHP und MySQL alle untergeordneten Knoten in einer hierarchischen Datenstruktur ab?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 12:12:02292Durchsuche

How to Retrieve All Child Nodes in a Hierarchical Data Structure with PHP and MySQL?

Hierarchische Daten mit MySQL und PHP abrufen

Das Abrufen hierarchischer Daten aus einer Datenbank kann eine Herausforderung sein, insbesondere wenn ein Adjazenzlisten-Datenmodell verwendet wird. Mit dieser Frage soll dieses Problem gelöst werden, indem eine Funktion erstellt wird, die alle untergeordneten Knoten, Enkel usw. unter einem bestimmten übergeordneten Knoten zurückgibt.

Aufbau eines hierarchischen Baums

Zunächst ruft der bereitgestellte PHP-Code Daten aus einer MySQL-Tabelle ab und speichert sie in einem assoziativen Array. Das Adjazenzlisten-Datenmodell stellt eine Hierarchie dar, indem Eltern-Kind-Beziehungen in einer einzigen Spalte (d. h. parent_id) gespeichert werden.

Um diese Daten in eine Baumstruktur umzuwandeln, durchläuft die Funktion buildtree() das Array rekursiv und verknüpft sie jeweils Knoten-ID mit seinen Daten und Erstellen eines verschachtelten Arrays mit untergeordneten Knoten als Elementen.

Knoten unter einem übergeordneten Knoten abrufen

Die Funktion fetch_recursive() dient zum Abrufen aller untergeordneten Knoten unter einem bestimmten übergeordneten Element. Es durchläuft die Baumstruktur, beginnend bei der angegebenen übergeordneten ID. Wenn die übergeordnete ID eines Knotens mit der angegebenen übergeordneten ID übereinstimmt, werden die Daten des Knotens zum Ergebnisarray hinzugefügt und mit der Untersuchung untergeordneter Knoten fortgefahren.

Beispielverwendung

Zur Veranschaulichung Funktionalität erstellt der folgende PHP-Code einen Baum und ruft untergeordnete Knoten unter einer bestimmten ID ab:

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

Das obige ist der detaillierte Inhalt vonWie rufe ich mit PHP und MySQL alle untergeordneten Knoten in einer hierarchischen Datenstruktur 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