[英]Build a tree menu with li tag from array
我正在檢索一個數組,並且我做了函數來構造該數組,因此它看起來像樹形數組。 如何使用列表標簽(ul,li)制作樹形菜單
function buildTree(array &$elements, $parentId = 0, $elkey = null) {
$branch = array();
foreach ($elements as $key=>$element) {
if ($element[$elkey]['parent_id'] == $parentId) {
$children = buildTree($elements, $element[$elkey]['id'], $elkey);
if ($children) {
$element['children'] = $children;
}
$branch[$element[$elkey]['id']] = $element;
unset($elements[$key]);
}
}
return $branch;
}
$menuTree = buildTree($systemPageCategories, 0, 'SystemPageCategory');
debug($menuTree);
打印=>
....
...
(int) 5 => array(
'SystemPageCategory' => array(
'id' => '5',
'parent_id' => '0',
'title' => 'Administration',
'url' => '',
'sort' => '5',
'published' => '1'
)
),
(int) 6 => array(
'SystemPageCategory' => array(
'id' => '6',
'parent_id' => '0',
'title' => 'Reports',
'url' => '',
'sort' => '6',
'published' => '1'
),
'children' => array(
(int) 7 => array(
'SystemPageCategory' => array(
'id' => '7',
'parent_id' => '6',
'title' => 'Revenue',
'url' => '',
'sort' => '1',
'published' => '1'
),
'children' => array(
(int) 13 => array(
'SystemPageCategory' => array(
'id' => '13',
'parent_id' => '7',
'title' => 'OBE Finance - Revenue (Current Monthly)',
'url' => '',
'sort' => '1',
'published' => '1'
)
),
(int) 14 => array(
'SystemPageCategory' => array(
'id' => '14',
'parent_id' => '7',
'title' => 'OBE Finance - Revenue (Snapshot Monthly)',
'url' => '',
'sort' => '2',
'published' => '1'
)
),
....
...
...
試試這個例子,將$ menuTree變量傳遞給buildMenu函數。
function buildMenu($menus)
{
$data = '';
foreach ($menus as $key => $menu) {
if ($key == 'children' && !empty($menu)) {
$data .= buildMenu($menu);
continue;
}
$data .= '<li><a href="'.$menu['url'].'">'.$menu['title'].'</a></li>';
}
if (!empty($data)) {
$data .= '<ul>'.$data.'</ul>';
}
return $data;
}
//build Tree structure from array
function buildTree(array &$elements, $parentId = 0, $elkey = null) {
$branch = array();
foreach ($elements as $key=>$element) {
if ($element[$elkey]['parent_id'] == $parentId) {
$children = buildTree($elements, $element[$elkey]['id'], $elkey);
if ($children) {
$element['children'] = $children;
}
$branch[$element[$elkey]['id']] = $element;
unset($elements[$key]);
}
}
return $branch;
}
//Build Menu
function buildMenu($arr, $elmkey) {
echo "<ul>";
foreach ($arr as $val) {
if (!empty($val['children'])) {
echo "<li>" . $val[$elmkey]['title'];
menu($val['children'], $elmkey);
echo "</li>";
} else {
echo "<li>" . $val[$elmkey]['title'] . "</li>";
}
}
echo "</ul>";
}
$menuTree = buildTree($systemPageCategories, 0, 'SystemPageCategory');
echo menu($menuTree, 'SystemPageCategory');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.