Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich einen Echo-Menübaum mithilfe einer rekursiven Funktion in PHP?

Wie erstelle ich einen Echo-Menübaum mithilfe einer rekursiven Funktion in PHP?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 06:58:291001Durchsuche

 How to Create an Echo Menu Tree Using a Recursive Function in PHP?

Echo-Menübaum mit rekursiver Funktion

Problemübersicht

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.

Rekursiver Funktionsansatz

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.

PHP-Funktionsimplementierung

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>
  1. Es werden drei Parameter benötigt: $categories (ein Array von Kategoriedaten), $parent (die aktuelle übergeordnete Kategorie-ID) und $level (die bestimmt die Ebene der Einrückung).
  2. Es durchläuft die Kategorien und prüft, ob ihr Stamm mit der angegebenen übergeordneten ID übereinstimmt.
  3. Wenn eine Übereinstimmung vorliegt, wird der Kategoriename ausgegeben, eingeschlossen in ein li und ein Element mit einer geeigneten Tier-Klasse zum Einrücken.
  4. Es ruft sich dann rekursiv mit der nächsten Kategorieebene auf, legt die neue übergeordnete ID fest und erhöht die Ebene.

Verwendung

So verwenden Sie die Funktion:

  1. Fragen Sie die Datenbank ab, um alle Kategorien abzurufen.
  2. Rufen Sie recurse() mit den Kategoriedaten als ersten Parameter auf.
  3. Echo der zurückgegebenen HTML-Ausgabe.

Umgang mit leeren untergeordneten Kategorien

Die anfängliche Implementierung kann zu leeren

    -Kategorien führen. Elemente für Kategorien ohne Kinder. Um dies zu verhindern, können Sie die Funktion wie folgt ändern:

    <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

      Elemente.

      Alternativ können Sie jeder Kategorie eine untergeordnete Anzahl hinzufügen und nur die

        wenn die Anzahl der Kinder größer als Null ist.

        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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn