Récupération d'un array dans un autre array
Bonjour.
J'ai un petit problème avec un menu que j'essaye de construire via des tableaux. En gros voici le code mon tableau :
Code:
1 2 3 4 5 6 7 8 9
| array(
array("link1.1" => "label 1.1",
"link1.2" => "label 1.2",
"link1.3" => "label 1.3"
),
array("link2.1" => "label 2.1",
"link2.2" => "label 2.2",
"link2.3" => "label 2.3"
)); |
En gros ce que je souhaite faire c'est réaliser une structure comme cela à partir de mon tableau:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <ul>
<li>
<a href="link1.1">label 1.1</a>
<ul>
<li><a href="link1.2">label 1.2<a></li>
<li><a href="link1.3">label 1.3<a></li>
</ul>
</li>
<li>
<a href="link2.1">label 2.1</a>
<ul>
<li><a href="link2.2">label 2.2<a></li>
<li><a href="link2.3">label 2.3<a></li>
</ul>
</li>
</ul> |
Le problème c'est que ce lorsque j'effectue ce code là :
Code:
1 2 3 4 5 6 7
| <ul>
<?php foreach ($this->submenu as $submenucat) : ?>
<li>
<?php echo var_dump($submenucat); ?>
</li>
<?php endforeach; ?>
</ul> |
J'ai ce code là qui généré, bref en gros j'ai l'impression qu'il ne me récupère pas mes array complètement...
Code:
1 2 3 4
| <ul>
<li> string(22) "Liste des utilisateurs" </li>
<li> string(17) "Listes des rôles" </li>
</ul> |
Quelqu'un voit-il ou est mon problème ?
Merci d'avance
Récupération d'un array dans un autre array
Salut Slake13
Pour repondre ata question, ma question: ton menu aura pas plus de 2 niveaux, comme par ex 1.3 et non pas 1.3.1?
Si il peut avoir plus de 2 niveaux, alors tu pourras songer aux fonctions recursives.
Si il ne peut avoir que deux niveaux, il faut noter que tu as array of arrays. Donc il te faut deux foreach, comme dans l'exemple (simple :) ) ci-dessous.
<?php
$menu = array(
array("link1.1" => "label 1.1",
"link1.2" => "label 1.2",
"link1.3" => "label 1.3"
),
array("link2.1" => "label 2.1",
"link2.2" => "label 2.2",
"link2.3" => "label 2.3"
));
echo "<ul>";
foreach ($menu as $key => $submenu)
{
echo "<li> $key sub menu ";
echo "<ul>";
foreach($submenu as $link=>$label)
{
echo "<li> <a href='" . $link ."'>" . $label . "</a></li>";
}
echo "</ul>";
echo "</li>";
}
echo "</ul>";
?>
Mais ici aussi tu n'auras le resultat attendu. Le titre des submenus n'est pas un link. Tu ne l'as meme pas precise. Pour preciser les titres des submenus tu pourras changer ton array comme suit:
$menu = array(
"titre 1" => array("link1.1" => "label 1.1",
"link1.2" => "label 1.2",
"link1.3" => "label 1.3"
),
"titre 2" => array("link2.1" => "label 2.1",
"link2.2" => "label 2.2",
"link2.3" => "label 2.3"
)
);
bonne chance!