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!