Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann eine rekursive Funktion ein mehrdimensionales Array aus einem flachen Datenbankergebnis erstellen?

Wie kann eine rekursive Funktion ein mehrdimensionales Array aus einem flachen Datenbankergebnis erstellen?

DDD
Freigeben: 2024-12-15 20:59:15
Original
555 Leute haben es durchsucht

How Can a Recursive Function Create a Multidimensional Array from a Flat Database Result?

Rekursive Funktion zum Generieren eines mehrdimensionalen Arrays aus dem Datenbankergebnis

Problem:

Hierarchischer Aufbau verschachtelter Arrays aus einer flachen Ergebnistabelle , wobei jede Zeile ein Element mit seinem übergeordneten Element darstellt ID.

Lösung:

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;
        }
    }

    return $branch;
}

$tree = buildTree($rows);
Nach dem Login kopieren

Erklärung:

Der Algorithmus baut iterativ eine hierarchische Baumstruktur mithilfe von Rekursion auf:

  1. Es initialisiert ein leeres Array $branch, um die aktuelle Ebene zu speichern der Baum.
  2. Es durchläuft die Elemente und prüft, ob die parent_id eines Elements mit der angegebenen $parentId übereinstimmt.
  3. Wenn eine Übereinstimmung gefunden wird, bedeutet dies, dass das Element ein untergeordnetes Element des aktuellen übergeordneten Elements ist sollte zum $branch hinzugefügt werden.
  4. Es ruft rekursiv die buildTree-Funktion mit der ID des Elements als neue $parentId auf, die gesucht werden soll seine untergeordneten Elemente.
  5. Wenn untergeordnete Elemente gefunden werden, werden sie als Unterarray zum aktuellen Element hinzugefügt.
  6. Nach der Verarbeitung aller untergeordneten Elemente wird das $branch-Array zurückgegeben, um die nächste Ebene darzustellen der Hierarchie.
  7. Der erste Aufruf von buildTree mit einer anfänglichen $parentId von 0 ruft die Stammelemente der Hierarchie ab und die rekursiven Aufrufe füllen sie auf die verschachtelte Struktur.

Das obige ist der detaillierte Inhalt vonWie kann eine rekursive Funktion ein mehrdimensionales Array aus einem flachen Datenbankergebnis erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage