Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich einen Echo-Menübaum mithilfe einer rekursiven Funktion in PHP?
Erstellen einer rekursiven Funktion, um eine in einer Datenbank gespeicherte hierarchische Menüstruktur zu durchlaufen und auszugeben HTML kann eine Herausforderung sein. Bei einer gegebenen Tabelle mit Kategorien und ihren übergeordneten Kategorien besteht die Aufgabe darin, einen Menübaum zu generieren, der die Hierarchie visuell darstellt.
Um dieses Problem zu lösen, ist eine rekursive Funktion erforderlich. Die Idee besteht darin, mit der Stammkategorie zu beginnen, ihre untergeordneten Elemente zu finden und die Funktion rekursiv für jedes untergeordnete Element aufzurufen und dabei die HTML-Ausgabe aufzubauen.
Hier ist eine mögliche Implementierung der PHP-Funktion:
<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>
So verwenden Sie die Funktion:
Die anfängliche Implementierung kann zu leeren
<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 Änderung stellt sicher, dass nur Kategorien mit untergeordneten Elementen
Alternativ können Sie jeder Kategorie eine untergeordnete Anzahl hinzufügen und nur die
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen Echo-Menübaum mithilfe einer rekursiven Funktion in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!