Heim >Backend-Entwicklung >PHP-Tutorial >Wie erstellt man in PHP eine hierarchische Baumstruktur aus einem flachen Array?

Wie erstellt man in PHP eine hierarchische Baumstruktur aus einem flachen Array?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 18:33:15206Durchsuche

How to Build a Hierarchical Tree Structure from a Flat Array in PHP?

Aufbau einer Baumstruktur aus einem flachen Array in PHP

Problem:

Sie haben ein flaches Array bestehend aus Elementen mit den Feldern „id“ und „parent_id“, wobei jedes Element höchstens ein übergeordnetes Element und null oder mehr untergeordnete Elemente haben darf. Wenn „parent_id“ 0 ist, handelt es sich bei dem Element um ein Element auf Stammebene. Das Ziel besteht darin, dieses flache Array in einen hierarchischen Baum mit Kind-Eltern-Beziehungen umzustrukturieren.

Lösung:

Die bereitgestellte Funktion buildTree() erledigt diese Aufgabe effektiv durch Durchlaufen des Eingabearrays und rekursiven Aufbau der Baumstruktur. Jedes Element im Ausgabebaum enthält seine ID, die übergeordnete ID und ein Array untergeordneter Elemente.

Implementierung:

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;
            unset($elements[$element['id']]);
        }
    }

    return $branch;
}

Das „unset“ Aufruf:

Im obigen Code ist der Aufruf unset() entscheidend für die Aufrechterhaltung der hierarchischen Struktur. Es entfernt verarbeitete Elemente aus dem ursprünglichen Eingabearray und stellt so sicher, dass Elemente nicht im Baum dupliziert werden.

Beispiel:

Bedenken Sie das bereitgestellte Eingabearray:

[_319_] => [...],
[_320_] => [...],
[_321_] => [...],
[_322_] => [...],
[_323_] => [...],
[_324_] => [...],
[_325_] => [...]

Nach der Verarbeitung behält der Ausgabebaum die Eltern-Kind-Beziehungen bei:

[_319_] => [...],
[_320_] => [
    'id' => '_320_',
    'parent_id' => 0,
    'children' => [
        [_321_] => [...],
        [_325_] => [...]
    ]
],
[_323_] => [
    'id' => '_323_',
    'parent_id' => 0,
    'children' => [
        [_324_] => [...]
    ]
]

Daher ist die Mit der Funktion buildTree() können Sie ein flaches Array von Elementen mit Eltern-Kind-Beziehungen in einen strukturierten hierarchischen Baum in PHP umwandeln.

Das obige ist der detaillierte Inhalt vonWie erstellt man in PHP eine hierarchische Baumstruktur aus einem flachen Array?. 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