Dieser Artikel führt Sie durch eine Methode zum Abrufen aller untergeordneten und untergeordneten Knoten für ein bestimmtes übergeordnetes Element unter Verwendung von PHP mit MySQL-Abfrageergebnissen. Durch diese Technik entfällt die Notwendigkeit, ein mehrdimensionales Array der Baumstruktur zu erstellen, und Sie können alle Knoten direkt abrufen.
Stellen Sie sich eine MySQL-Tabelle vor, die als Adjazenzliste organisiert ist, in der Hierarchiedaten durch Spalten für ID und Name dargestellt werden und parent_id. Die folgende SQL-Abfrage kann alle Zeilen aus dieser Tabelle in ein assoziatives Array abrufen:
$r = mysql_query("SELECT * FROM test "); $data = array(); while($row = mysql_fetch_assoc($r)) { $data[] = $row; }
Angenommen, wir möchten dieses Array nach Knoten unter einem übergeordneten Knoten mit der ID 3 filtern, einschließlich des übergeordneten Knotens selbst. Diese benutzerdefinierte fetch_recursive-Funktion kann Folgendes erreichen:
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; }
Um diese Funktion zu verwenden, übergeben Sie das aus der Abfrage erhaltene $data-Array als erstes Argument und die ID des übergeordneten Knotens, für den Sie die untergeordneten Knoten abrufen möchten das zweite Argument:
$list = fetch_recursive($data, 3);
$list enthält jetzt ein assoziatives Array mit allen untergeordneten Knoten und dem übergeordneten Knoten (ID 3).
Diese Lösung ruft alle untergeordneten und untergeordneten Knoten effizient ab für ein bestimmtes übergeordnetes Element, ohne dass eine mehrdimensionale Baumstrukturkonstruktion erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie erhalte ich mit PHP alle untergeordneten und untergeordneten Knoten für ein übergeordnetes Element in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!