Erstellen Sie einen Baum aus einem flachen Array in PHP
In PHP kann es schwierig sein, eine Baumdatenstruktur aus einem flachen Array zu erstellen . Diese Aufgabe kann jedoch durch die Anwendung einer Rekursion und ein Verständnis der Eltern-Kind-Beziehung innerhalb des flachen Arrays vereinfacht werden.
Gegeben sei ein flaches Array, in dem jedes Element eine „id“ und eine „parent_id“ hat, das Ziel besteht darin, es in einen hierarchischen Baum umzuwandeln. Jedes Element im resultierenden Baum sollte eine „Children“-Eigenschaft haben, wenn es untergeordnete Elemente hat.
Lösung
Der bereitgestellte Code versucht, den Baum rekursiv zu erstellen, aber es funktioniert nicht Das Element kann nach dem Hinzufügen zum Zweig nicht entfernt werden, was zu mehreren Kopien desselben Elements führt. Um dieses Problem zu beheben, müssen wir das Element aus dem flachen Array entfernen, nachdem wir es dem Zweig hinzugefügt haben.
function buildTree(array &$elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[$element['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
Erklärung
Das resultierende Array ist ein hierarchischer Baum mit Jeder Knoten enthält seine untergeordneten Knoten als verschachteltes Array und bietet so eine klare Darstellung der Eltern-Kind-Beziehungen im ursprünglichen flachen Array.
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP effizient eine Baumstruktur aus einem flachen Array erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!