"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment la récursivité peut-elle être utilisée pour générer une arborescence de menus imbriquée à partir d'une base de données avec des catégories parent ?

Comment la récursivité peut-elle être utilisée pour générer une arborescence de menus imbriquée à partir d'une base de données avec des catégories parent ?

Publié le 2024-11-07
Parcourir:340

How can recursion be used to generate a nested menu tree from a database with parent categories?

Récursion pour la génération de l'arborescence de menus

Dans votre situation, vous disposez d'une structure de base de données dans laquelle les catégories ont un champ « racine » indiquant leur catégorie parent. . La sortie HTML que vous désirez implique des listes imbriquées représentant la hiérarchie des catégories. Pour y parvenir, une fonction PHP récursive peut être utilisée.

Voici un exemple de fonction :

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $ret .= $this->recurse($categories, $category['id'], $level 1); $ret .= '
  • '; } } return $ret . '
'; }

Cette fonction suppose que les catégories racine ont un champ « racine » avec une valeur nulle. Il parcourt les catégories, identifie les catégories enfants en fonction de leur champ « racine » et construit le code HTML à l'aide de listes imbriquées.

Pour utiliser cette fonction :

  1. Interrogez votre base de données pour un tableau multidimensionnel de catégories.
  2. Appelez la fonction récursive avec le tableau de catégories et null comme paramètre parent.
  3. Attribuez la valeur renvoyée à une variable (par exemple, $Tree).
  4. Faites écho à la variable $Tree pour afficher l'arborescence de menu imbriquée.

Facultativement, vous pouvez modifier la fonction pour éviter les listes vides en vérifiant si la catégorie a des catégories enfants avant de créer la liste :

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $sub = $this->recurse($categories, $category['id'], $level 1); if ($sub != '
      ') { $ret .= $sub; } $ret .= '
    • '; } } return $ret . '
    '; }

    Cette fonction modifiée ne créera des listes que si la catégorie a au moins un enfant.

    Dernier tutoriel Plus>

    Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

    Copyright© 2022 湘ICP备2022001581号-3