Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich in PHP effizient eine Baumstruktur aus einem flachen Array erstellen?

Wie kann ich in PHP effizient eine Baumstruktur aus einem flachen Array erstellen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-02 15:33:15690Durchsuche

How Can I Efficiently Build a Tree Structure from a Flat Array in PHP?

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

  1. Wir durchqueren die Array, das nach Elementen sucht, die die angegebene übergeordnete ID haben.
  2. Wenn ein passendes Element gefunden wird, weisen wir es einer Variablen zu und führen eine Rekursion durch, um es zu sammeln Kinder.
  3. Wenn das Element Kinder hat, weisen wir sie der Eigenschaft „children“ des aktuellen Elements zu.
  4. Nachdem wir das Element zum Zweig hinzugefügt haben, entfernen wir es aus dem flachen Array Duplikate verhindern.
  5. Wir setzen diesen Prozess rekursiv fort, bis der gesamte Baum erstellt ist.

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!

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