Heim >Datenbank >MySQL-Tutorial >Wie kann Rekursion verwendet werden, um einen verschachtelten Menübaum aus einer Datenbank mit übergeordneten Kategorien zu generieren?
Rekursion zur Menübaumgenerierung
In Ihrer Situation haben Sie eine Datenbankstruktur, in der Kategorien ein „Stamm“-Feld haben, das ihre übergeordnete Kategorie angibt . Die gewünschte HTML-Ausgabe umfasst verschachtelte Listen, die die Kategoriehierarchie darstellen. Um dies zu erreichen, kann eine rekursive PHP-Funktion eingesetzt werden.
Hier ist eine Beispielfunktion:
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $ret .= $this->recurse($categories, $category['id'], $level + 1); $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
Diese Funktion geht davon aus, dass Stammkategorien ein „Stamm“-Feld mit einem Nullwert haben. Es durchläuft die Kategorien, identifiziert untergeordnete Kategorien anhand ihres „Stamm“-Felds und erstellt den HTML-Code mithilfe verschachtelter Listen.
So verwenden Sie diese Funktion:
Optional können Sie die Funktion ändern, um leere Listen zu vermeiden, indem Sie vor dem Erstellen der Liste prüfen, ob die Kategorie untergeordnete Kategorien hat:
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $sub = $this->recurse($categories, $category['id'], $level + 1); if ($sub != '<ul></ul>') { $ret .= $sub; } $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
Diese modifizierte Funktion erstellt nur Listen, wenn die Kategorie mindestens ein untergeordnetes Element hat.
Das obige ist der detaillierte Inhalt vonWie kann Rekursion verwendet werden, um einen verschachtelten Menübaum aus einer Datenbank mit übergeordneten Kategorien zu generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!