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 :
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.
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