PHP/MySQL-Aufbau ungeordneter Listenmenübäume: Ein nicht rekursiver Ansatz für einzelne Datenbankabfragen
Der Aufbau ungeordneter Listenmenübäume aus Datenbankabfragen ist eine gemeinsame Aufgabe. Typischerweise werden rekursive Funktionen verwendet, die die Datenbank mehrfach abfragen. Ein effizienterer, nicht rekursiver Ansatz ist jedoch mit einer einzigen Datenbankabfrage möglich.
Angesichts eines Arrays von Seitenobjekten mit den Attributen „id“, „title“ und „parent_id“ besteht das Ziel darin, eine Funktion zu erstellen, die den HTML-Code für generiert ein ungeordnetes Listenmenü.
Lösung:
Unsere Lösung verwendet die folgenden Schritte:
Code:
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id){ return true; } } return false; } function build_menu($rows, $parent=0) { $result = "<ul>"; foreach ($rows as $row) { if ($row['parent_id'] == $parent){ $result.= "<li>{$row['title']}"; if (has_children($rows,$row['id'])) { $result.= build_menu($rows,$row['id']); } $result.= "</li>"; } } $result.= "</ul>"; return $result; }</code>
Beispielverwendung:
<code class="php">$menu = [ ['id' => 1, 'title' => 'Menu 1', 'parent_id' => null], ... // Additional menu objects ]; echo build_menu($menu); // Outputs the complete menu list</code>
Vorteile:
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen ungeordneten Listenmenübaum in PHP/MySQL ohne Rekursion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!