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!