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
Mary-Kate OlsenOriginal
2024-10-29 00:28:02920Durchsuche

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>

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>

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!

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