php créer un menu de navigation de tableau multidimensionnel dynamiquement
J'ai fait des recherches sur ce sujet, et n'était pas en mesure de trouver une réponse exacte. La plupart des questions/réponses sur ici concernant ce semble être inachevée. Si quelqu'un connaît une solution finale semblable à ma question, merci de me diriger dans cette direction!
Voici mon tableau:
Array
(
['home'] => Array
(
[0] => sub-home1
[1] => sub-home2
)
['about'] => Array
(
[0] => sub-about
['about2'] => Array
(
[0] => sub-sub-about
)
)
['staff'] => Array
(
[0] => sub-staff1
[1] => sub-staff2
)
['contact'] => contact
)
Et voici ce que je voudrais transformer en:
<ul>
<li><a href="">home<a/>
<ul>
<li><a href="">sub-home1</a></li>
<li><a href="">sub-home2</a></li>
</ul>
</li>
<li><a href="">about<a/>
<ul>
<li><a href="">sub-about</a></li>
<li><a href="">about2</a>
<ul>
<li><a href="">sub-sub-about<a/></li>
</ul>
</li>
</ul>
</li>
<li><a href="">staff<a/>
<ul>
<li><a href="">sub-staff1</a></li>
<li><a href="">sub-staff2</a></li>
</ul>
</li>
<li><a href="">contact<a/></li>
</ul>
Le tableau sera généré dynamiquement, mais aura une limite de 3 niveaux ex: sur->about2->sous-sous-sous-sujet. J'ai essayé d'aller sur cette question: PHP/MySQL Menu de Navigation, mais ils n'ont pas vraiment l'air de venir à une conclusion? Je suis familier avec foreach du laps de temps, et pour les boucles, mais je n'arrive pas à les envelopper ma tête autour de celui-ci.
EDIT: Mauricette, votre code fonctionne!
Ouais je vais essayer de trouver un bon exemple, pas beaucoup là-bas!
Vous souhaitez trouver un DFS (depth-first search) algorithme et de le mettre en œuvre à la sortie de la liste.
OriginalL'auteur klye_g | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
Voici ma solution:
J'ai légèrement modifié le code; s'il vous plaît essayer à nouveau et laissez-moi savoir si maintenant il fonctionne comme prévu.
Merci beaucoup monsieur! J'ai été sur la page 5 de google pour essayer de trouver un exemple. Mais votre solution fonctionne. Maintenant, j'ai appris quelque chose de nouveau!
Pour plus d'informations, pour fermer une ancre c'est
</a>
et pas<a/>
.OriginalL'auteur
De Calvin solution a fonctionné pour moi. Voici la version éditée. On peut utiliser plus de boucles imbriquées pour obtenir des sous - sous-éléments de menu.
OriginalL'auteur Vinayak Anivase
Je pense que vous pouvez utiliser la récursivité? Voici quelques pseudo-code, ne sont pas très familiers avec php.
OriginalL'auteur Calvin Jia
Je serais probablement légèrement adapter le tableau à quelque chose comme ce qui suit:
Avec une structure comme ceci vous pouvez utiliser la récursivité pour construire votre menu HTML:
Je nourris le tableau à la fonction ci-dessous (modifié) et il fonctionne pour moi maintenant. Veuillez noter que j'ai un test simple. Le reste de la programmation est à vous de voir 🙂
Bah désolé! A l'autre façon
OriginalL'auteur hoppa