[英]Multidimension array displayed as dropdown menu
我想將我的數組顯示為菜單。 當數組在一個維度時很容易 - 我可以很容易地使用for循環來生成一個。 但是現在我的菜單數組看起來像這樣:
$menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6"); // hope it's defined coreectly
因此,如果主數組$菜單中有一個元素,如item1或item5,我想將其顯示為普通元素
標簽,但如果其中一個元素得到像item3那樣的內部元素,我想將它顯示為 <li>item3 <ul> <li>subitem1</li> <li>subitem2</li> <li>subitem3</li> </ul> </li>
我想我需要在for循環中使用for循環,但可能有一種更簡單的方法。
問候,並提前感謝馬特
你可以使用遞歸,這將有額外的好處,能夠遍歷無限級別的子菜單:
function renderList($array) {
echo "<ul>";
foreach ($array as $key => $item)) {
echo "<li>";
if (is_array($item) {
echo $key;
renderList($item);
} else {
echo $item;
}
echo "</li>";
}
echo "</ul>";
}
$menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6");
renderList($menu);
這是一個小提琴: http : //phpfiddle.org/main/code/2p8-erq
你應該使用嵌套函數。
代碼更新
這是一個小提琴: http : //phpfiddle.org/main/code/tac-3jh
<?php
$menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6");
function arr2ul($arr){
$ret='';
if (is_array($arr)){
$ret='<ul>';
foreach($arr as $key=>$val){
if(is_array($val)){
$ret.='<li>'.$key;
$ret.=arr2ul($val);
$ret.='</li>';
}else{
$ret.='<li>'.$val.'</li>';
}
}
$ret.='</ul>';
}
return $ret;
}
$result=arr2ul($menu);// contains the html output and you
// can echo it where you want
echo $result;
?>
輸出:(像這樣)
<ul>
<li>item1</li>
<li>item2
<ul>
<li>sub item<li>
</ul>
</li>
</ul>
嘗試這個
<?php
$menu = array("item1", "item2", "item3" => array("subitem1", "subitem2", "subitem3"), "item4", "item5", "item6"); // hope it's defined coreectly
setfunction($menu);
function setfunction($menu){
echo "<ul>";
foreach ($menu as $key => $item) {
echo "<li>";
if(is_array($item))
{
echo $key;
setfunction($item);
}
else
{
echo $item;
}
echo "</li>";
}
echo "</ul>";
}
?>
產量
item1
item2
item3
subitem1
subitem2
subitem3
item4
item5
item6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.