我建立了一个包含网站菜单系统的数组:
$menu = array(
'Page_1' => array(
'display' => 'Page 1'
),
'Page_2' => array(
'display' => 'Page 2',
'sub' => array(
'Sub_Page_1' => array(
'display' => 'Sub Page 1'
)
)
),
'Page_3' => array(
'display' => 'Page 3',
'sub' => array(
'Sub_Page_2' => array(
'display' => 'Sub Page 2'
),
'Sub_Page_3' => array(
'display' => 'Sub Page 3'
)
)
)
);
我正在使用以下函数将菜单系统解析并输出为嵌套无序列表。
function Build_Menu($menu_array,$is_sub){
$attr = (!$is_sub) ? ' class="menu"' : ' class="submenu"';
$menu = "<ul$attr>";
foreach($menu_array as $id => $properties){
foreach($properties as $key => $val){
if(is_array($val)){
$sub = Build_Menu($val,TRUE);
}
else{
$sub = NULL;
$$key = $val;
}
}
$menu .= '<li><a href="#">'.$display.'</a>'.$sub.'</li>';
unset($url, $display, $sub);
}
return $menu . "</ul>";
}
这可以正常工作并生成如下列表:
Page 1
Page 2
Sub Page 1
Page 3
Sub Page 2
Sub Page 3
我卡住的地方是我现在正在寻找修改函数,以便我可以传入父页面并返回该父页面的子页面。
就像是:
函数 Build_Menu($menu_array,$is_sub,'Page 2'){ ... }
这将生成以下输出:
Page 2
Sub Page 1
或者
函数 Build_Menu($menu_array,$is_sub,'Page 3'){ ... }
这将产生:
Page 3
Sub Page 2
Sub Page 3
重要的是该函数保持递归,因此无论它们有多少子级别,它们都将作为函数的一部分输出。计划是每个页面的“显示”值将是唯一标识符。
任何帮助将不胜感激,因为我已经为此转了几个小时!
非常感谢,詹姆斯。