Heim >Backend-Entwicklung >PHP-Tutorial >Wie konvertiert man eine Array-Liste effizient in eine hierarchische Baumstruktur?

Wie konvertiert man eine Array-Liste effizient in eine hierarchische Baumstruktur?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 14:21:10165Durchsuche

How to Efficiently Convert an Array List into a Hierarchical Tree Structure?

Erstellen von Array-Bäumen aus Array-Listen

In Situationen, in denen Sie eine Liste von Elementen mit hierarchischen Beziehungen haben, wandeln Sie diese in eine baumartige um Struktur kann entscheidend sein. Diese Transformation ist besonders nützlich, wenn es um komplexe Daten geht, die eine effiziente Organisation und Abfrage erfordern.

Betrachten Sie die folgende Liste als Beispiel:

[
  {id: 100, parentId: 0, name: 'a'},
  {id: 101, parentId: 100, name: 'a'},
  {id: 102, parentId: 101, name: 'a'},
  {id: 103, parentId: 101, name: 'a'},
]

Das Ziel besteht darin, diese Liste hierarchisch neu zu organisieren Baumstruktur, in der jedes Element einen Verweis auf sein übergeordnetes Element und seine untergeordneten Elemente (falls vorhanden) hat.

Ein effektiver Ansatz zur Durchführung dieser Konvertierung wird durch den folgenden Code demonstriert Snippet:

<?php

$arr = [
    ['id' => 100, 'parentId' => 0, 'name' => 'a'],
    ['id' => 101, 'parentId' => 100, 'name' => 'a'],
    ['id' => 102, 'parentId' => 101, 'name' => 'a'],
    ['id' => 103, 'parentId' => 101, 'name' => 'a'],
];

$new = [];
foreach ($arr as $a) {
    $new[$a['parentId']][] = $a;
}
$tree = createTree($new, [$arr[0]]);
print_r($tree);

function createTree(&$list, $parent) {
    $tree = [];
    foreach ($parent as $k => $l) {
        if (isset($list[$l['id']])) {
            $l['children'] = createTree($list, $list[$l['id']]);
        }
        $tree[] = $l;
    }
    return $tree;
}

Dieser Code verarbeitet die Eingabeliste effizient, indem er Elemente basierend auf ihrer parentId gruppiert. Anschließend wird die Baumstruktur rekursiv erstellt und jedes Element mit seinen untergeordneten Elementen gefüllt. Der resultierende Baum bietet eine hierarchische Darstellung der ursprünglichen Liste und erleichtert so die Navigation und das Abrufen von Daten basierend auf Eltern-Kind-Beziehungen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man eine Array-Liste effizient in eine hierarchische Baumstruktur?. 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