Heim > Datenbank > MySQL-Tutorial > Wie kann ich eine rekursive PHP-Funktion erstellen, um einen hierarchischen Menübaum aus einer MySQL-Datenbanktabelle zu generieren?

Wie kann ich eine rekursive PHP-Funktion erstellen, um einen hierarchischen Menübaum aus einer MySQL-Datenbanktabelle zu generieren?

Mary-Kate Olsen
Freigeben: 2024-10-29 00:28:02
Original
919 Leute haben es durchsucht

How can I create a recursive PHP function to generate a hierarchical menu tree from a MySQL database table?

Echo-Menübaum mit rekursiver Funktion

Um einen hierarchischen Menübaum aus einer Datenbanktabelle mithilfe einer rekursiven Funktion zu generieren, ziehen Sie den folgenden Ansatz in Betracht:

Problem:

Sie möchten eine rekursive Funktion erstellen, die einen hierarchischen Menübaum aus einer MySQL-Datenbank extrahiert.

Situation:

Die Tabelle enthält Spalten:

  • id
  • root (ID der übergeordneten Kategorie oder null für Root-Kategorien)
  • Name

Erwartete HTML-Ausgabe:

<li><a href="#"><p class="Tier0">Datori</p></a>
    <ul style="display: block">
        <li><a href="#"><p class="Tier1">Cookies</p></a></li>
        <li><a href="#"><p class="Tier1">Events</p></a></li>
        <li><a href="#"><p class="Tier1">Forms</p></a></li>
        <li><a href="#"><p class="Tier1">Games</p></a></li>
        <li><a href="#"><p class="Tier1">Images</p></a>
            <ul>
                <li><a href="#"><p class="Tier2">CSS</p></a></li>
                <li><a href="#"><p class="Tier2">JavaScript</p></a></li>
                <li><a href="#"><p class="Tier2">JQuery</p></a></li>
            </ul>
        </li>
        <li><a href="#"><p class="Tier1">Navigations</p></a>
            <ul>
                <li><a href="#"><p class="Tier2">CSS</p></a></li>
                <li><a href="#"><p class="Tier2">JavaScript</p></a></li>
                <li><a href="#"><p class="Tier2">JQuery</p></a></li>
            </ul>
        </li>
        <li><a href="#"><p class="Tier1">Tabs</p></a></li>
    </ul>
</li>
<li><a href="#"><p class="Tier0">Washing Machines</p></a></li>
Nach dem Login kopieren

Vorgeschlagene 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>
Nach dem Login kopieren

Verwendung:

  1. Rufen Sie die Kategorieliste in ein mehrdimensionales Array ab.
  2. Rufen Sie die Rekursionsfunktion mit dem Kategoriearray auf und die Ausgabe ist der gewünschte HTML-Menübaum.

Zusätzliche Überlegungen:

  • Verhindern Sie leere UL-Tags, indem Sie die Anzahl der untergeordneten Elemente überprüfen, bevor Sie sie anhängen.
  • Erwägen Sie die Verwendung einer Datenbankspalte um die Anzahl der Kinder aus Effizienzgründen zu speichern.

Das obige ist der detaillierte Inhalt vonWie kann ich eine rekursive PHP-Funktion erstellen, um einen hierarchischen Menübaum aus einer MySQL-Datenbanktabelle zu generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage