建立与阵列里标签的树形菜单 [英] Build a tree menu with li tag from array
本文介绍了建立与阵列里标签的树形菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我检索一个数组,我做了功能到结构数组,所以它看起来树阵。如何使列表标签(UL,LI)
树形菜单 函数buildTree(阵列和放大器; $元素,$ parentId的= 0,$ elkey = NULL){
$分公司=阵列(); 的foreach($元素$关键=> $元素){
如果($元素[$ elkey] ['PARENT_ID'] == $ parentId的){
$儿童= buildTree($元素,$元素[$ elkey] ['身份证'],$ elkey);
如果($子女){
$元素['孩子'] = $儿童;
}
$分支[$元素[$ elkey] ['身份证'] = $元素;
未设置($元素[$关键]);
}
}
返回$分公司;
} $ menuTree = buildTree($ systemPageCategories,0,'SystemPageCategory');
调试($ menuTree);
打印=>
....
...(INT)5 =>阵列(
SystemPageCategory'=>阵列(
'ID'=> 5,
PARENT_ID'=> 0,
'标题'=> '行政',
'URL'=> '',
'排序'=> 5,
'发表'=> '1'
)
)
(INT)6 =>阵列(
SystemPageCategory'=>阵列(
'ID'=> '6',
PARENT_ID'=> 0,
'标题'=> 报告,
'URL'=> '',
'排序'=> '6',
'发表'=> '1'
)
'孩子'=>阵列(
(INT)7 =>阵列(
SystemPageCategory'=>阵列(
'ID'=> '7',
PARENT_ID'=> '6',
'标题'=> '收入',
'URL'=> '',
'排序'=> '1',
'发表'=> '1'
)
'孩子'=>阵列(
(INT)13 =>阵列(
SystemPageCategory'=>阵列(
'ID'=> '13',
PARENT_ID'=> '7',
'标题'=> OBE财务 - 收入(当前每月),
'URL'=> '',
'排序'=> '1',
'发表'=> '1'
)
)
(INT)14 =>阵列(
SystemPageCategory'=>阵列(
'ID'=> '14',
PARENT_ID'=> '7',
'标题'=> OBE财务 - 收入(每月快照),
'URL'=> '',
'排序'=> '2',
'发表'=> '1'
)
)....
...
...
解决方案
//修建从阵列树形结构
功能buildTree(阵列和放大器; $元素,$ parentId的= 0,$ elkey = NULL){
$分公司=阵列(); 的foreach($元素$关键=> $元素){
如果($元素[$ elkey] ['PARENT_ID'] == $ parentId的){
$儿童= buildTree($元素,$元素[$ elkey] ['身份证'],$ elkey);
如果($子女){
$元素['孩子'] = $儿童;
}
$分支[$元素[$ elkey] ['身份证'] = $元素;
未设置($元素[$关键]);
}
}
返回$分公司;
}
//生成菜单
功能buildMenu($改编,$ elmkey){
回声< UL>中;
的foreach($改编为$ VAL){
如果(!空($ VAL ['孩子'])){
回声<立GT; 。 $ VAL [$ elmkey] ['标题'];
菜单($ VAL ['孩子'],$ elmkey);
回声< /李>中;
}其他{
回声<立GT; 。 $ VAL [$ elmkey] ['标题']。 < /李>中;
}
}
回声< / UL>中;
}$ menuTree = buildTree($ systemPageCategories,0,'SystemPageCategory');
回声菜单($ menuTree,'SystemPageCategory');
<一个href=\"http://stackoverflow.com/questions/21060598/create-a-ul-li-menu-from-a-tree-like-array/21060940#21060940\">buildMenu()参考
I am retrieving an array and I made function to structure the array so it looks tree array. How to make tree menu with list tag (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);
print =>
....
...
(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'
)
),
....
...
...
解决方案
//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');
这篇关于建立与阵列里标签的树形菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文