Hintergrund:
Das Erstellen eines Baummenüs aus Datenbankdaten kann eine sein gemeinsame Aufgabe. In diesem Artikel wird erläutert, wie Sie aus einem PHP-Array von Seitenobjekten einen Menübaum für eine ungeordnete Liste (UL) erstellen, ohne Rekursion zu verwenden.
Dateneinrichtung:
Ihre Seitenobjekte haben die folgenden Attribute:
Funktionsübersicht :
Wir erstellen eine Funktion, die ein Array von Seitenobjekten nimmt und den entsprechenden HTML-UL-Baum generiert.
Hilfsfunktion: has_children()
Diese Funktion prüft, ob eine Seite untergeordnete Seiten hat.
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id) return true; } return false; }</code>
Rekursive Build_Menu()-Funktion
Die build_menu()-Funktion iteriert durch das Array und generiert den HTML-UL-Baum. Es verwendet eine Variable $parent, um die aktuelle übergeordnete Seite zu verfolgen.
<code class="php">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>
Ausgabe:
Nach der Übergabe des Arrays von Seitenobjekten an build_menu() Mit der Funktion können Sie den resultierenden HTML-UL-Baum echoen. Die Ausgabe ist eine verschachtelte UL-Menüstruktur, die Ihre Datenbankdaten darstellt.
<code class="php">echo build_menu($menu);</code>
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein Baummenü in PHP/MySQL ohne Rekursion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!