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:
- Es initialisiert ein leeres Array $branch, um die aktuelle Ebene zu speichern der Baum.
- Es durchläuft die Elemente und prüft, ob die parent_id eines Elements mit der angegebenen $parentId übereinstimmt.
- Wenn eine Übereinstimmung gefunden wird, bedeutet dies, dass das Element ein untergeordnetes Element des aktuellen übergeordneten Elements ist sollte zum $branch hinzugefügt werden.
- Es ruft rekursiv die buildTree-Funktion mit der ID des Elements als neue $parentId auf, die gesucht werden soll seine untergeordneten Elemente.
- Wenn untergeordnete Elemente gefunden werden, werden sie als Unterarray zum aktuellen Element hinzugefügt.
- Nach der Verarbeitung aller untergeordneten Elemente wird das $branch-Array zurückgegeben, um die nächste Ebene darzustellen der Hierarchie.
- 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!