Heim >Backend-Entwicklung >PHP-Tutorial >Wie konvertiert man ein Array von Datensätzen effizient in eine verschachtelte Baumstruktur?

Wie konvertiert man ein Array von Datensätzen effizient in eine verschachtelte Baumstruktur?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 12:55:11561Durchsuche

How to Efficiently Convert an Array of Records into a Nested Tree Structure?

So konvertieren Sie ein Array von Datensätzen effizient in eine Baumstruktur

In diesem Szenario verfügen Sie über ein Array von Datensätzen, die eine hierarchische Struktur darstellen . Jeder Datensatz verfügt über eine ID, eine übergeordnete ID und einen Namen. Das Ziel besteht darin, dieses Array in eine verschachtelte Baumstruktur umzuwandeln, in der der Wurzelknoten untergeordnete Knoten hat, die wiederum ihre eigenen untergeordneten Knoten haben können.

Um dies zu erreichen, wird eine rekursive Funktion namens createTree verwendet. Diese Funktion benötigt zwei Parameter: einen Verweis auf das Array von Datensätzen und ein übergeordnetes Array. Es durchläuft das übergeordnete Array und prüft für jedes übergeordnete Element, ob im Datensatzarray untergeordnete Datensätze vorhanden sind. Wenn untergeordnete Datensätze vorhanden sind, ruft es die Funktion „createTree“ rekursiv auf, um sie zu verarbeiten, und weist das Ergebnis der Eigenschaft „childs“ des übergeordneten Elements zu.

Es folgt ein Beispiel:

$arr = array(
  array('id' => 100, 'parentid' => 0, 'name' => 'a'),
  array('id' => 101, 'parentid' => 100, 'name' => 'a'),
  array('id' => 102, 'parentid' => 101, 'name' => 'a'),
  array('id' => 103, 'parentid' => 101, 'name' => 'a'),
);

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

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

Dieser Code wird die gewünschte Baumstruktur ausgeben. Die Funktion „createTree“ wandelt die übergeordneten Datensätze rekursiv in untergeordnete Datensätze um und erstellt so eine hierarchische Baumdarstellung der Daten. Beachten Sie, dass die Funktion mit einem Verweis auf das Eingabearray arbeitet, sodass Änderungen zurück zum ursprünglichen Array übertragen werden können.

Das obige ist der detaillierte Inhalt vonWie konvertiert man ein Array von Datensätzen effizient in eine verschachtelte 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