Maison > base de données > tutoriel mysql > Comment puis-je créer une fonction PHP récursive pour générer une arborescence de menus hiérarchique à partir d'une table de base de données MySQL ?

Comment puis-je créer une fonction PHP récursive pour générer une arborescence de menus hiérarchique à partir d'une table de base de données MySQL ?

Mary-Kate Olsen
Libérer: 2024-10-29 00:28:02
original
919 Les gens l'ont consulté

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

Arborescence de menus en écho avec fonction récursive

Pour générer une arborescence de menus hiérarchique à partir d'une table de base de données à l'aide d'une fonction récursive, envisagez l'approche suivante :

Problème :

Vous souhaitez créer une fonction récursive qui extrait une arborescence de menus hiérarchique d'une base de données MySQL.

Situation :

Le tableau contient des colonnes :

  • id
  • root (ID de la catégorie parent, ou null pour les catégories racine)
  • name

Sortie HTML attendue :

<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>
Copier après la connexion

Fonction PHP proposée :

<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>
Copier après la connexion

Utilisation :

  1. Récupérez la liste des catégories dans un tableau multidimensionnel.
  2. Appelez la fonction recurse avec le tableau de catégories et la sortie sera l'arborescence de menu HTML souhaitée.

Considérations supplémentaires :

  • Empêchez les balises UL vides en vérifiant le nombre d'enfants avant de les ajouter.
  • Envisagez d'utiliser une colonne de base de données pour stocker le nombre d'enfants pour plus d'efficacité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal