【发布时间】:2017-08-30 07:05:51
【问题描述】:
我有一个像下面这样的树,它包含第 n 级权限。
Landing Page Footer Archive
|| || ||
|| || ||
Current ========== Pipeline=== BHI Phonebook==Password Keeper Edit==View==Delete
|| ||
Open Forms Open Forms
|| ||
Blog Request Blog Request
|| ||
Add == Edit Add == Edit
样本数组
$list = Array
(
[0] => Array
(
[parent] => 0
[item_level] => 1
[id] => 1
[display_name] => Landing Page
)
[1] => Array
(
[parent] => 1
[item_level] => 2
[id] => 2
[display_name] => Current
)
[2] => Array
(
[parent] => 2
[item_level] => 3
[id] => 5
[display_name] => Open Forms
)
[3] => Array
(
[parent] => 5
[item_level] => 4
[id] => 9
[display_name] => Blog Request
)
[4] => Array
(
[parent] => 9
[item_level] => 5
[id] => 10
[display_name] => Add
)
[5] => Array
(
[parent] => 9
[item_level] => 5
[id] => 11
[display_name] => Update
)
[6] => Array
(
[parent] => 1
[item_level] => 2
[id] => 3
[display_name] => Pipeline
)
[7] => Array
(
[parent] => 3
[item_level] => 3
[id] => 6
[display_name] => Open Forms
)
[8] => Array
(
[parent] => 6
[item_level] => 4
[id] => 12
[display_name] => Blog Request
)
[9] => Array
(
[parent] => 12
[item_level] => 5
[id] => 13
[display_name] => Add
)
[10] => Array
(
[parent] => 12
[item_level] => 5
[id] => 14
[display_name] => Update
)
[11] => Array
(
[parent] => 1
[item_level] => 2
[id] => 4
[display_name] => BHI
)
[12] => Array
(
[parent] => 1
[item_level] => 2
[id] => 7
[display_name] => Add Property
)
[13] => Array
(
[parent] => 1
[item_level] => 2
[id] => 8
[display_name] => Show Child Properties
)
[14] => Array
(
[parent] => 0
[item_level] => 1
[id] => 15
[display_name] => Footer
)
[15] => Array
(
[parent] => 15
[item_level] => 2
[id] => 16
[display_name] => Phonebook
)
[16] => Array
(
[parent] => 15
[item_level] => 2
[id] => 17
[display_name] => Password Keeper
)
[17] => Array
(
[parent] => 0
[item_level] => 1
[id] => 18
[display_name] => Archive
)
[18] => Array
(
[parent] => 18
[item_level] => 2
[id] => 19
[display_name] => Edit
)
[19] => Array
(
[parent] => 18
[item_level] => 2
[id] => 20
[display_name] => View
)
[20] => Array
(
[parent] => 18
[item_level] => 2
[id] => 21
[display_name] => Delete
)
)
预期输出
//Here Key is the value of "id" attribute
$final_output = array(
1 => array(
2=>array(5=>array(9=>array(10,11))),
3=>array(6=>array(12=>array(13,14))),
4,//As it doesnt have any child
7,//As it doesnt have any child
8 //As it doesnt have any child
),
15 => array(
16, //As it doesnt have any child
17 ////As it doesnt have any child
),
18 => array(
19, //As it doesnt have any child
20, ////As it doesnt have any child
21 ////As it doesnt have any child
),
);
这里,1:登陆页面,15:页脚,18:存档(其“Id”属性)等。
在上述数组之后,我将不得不进行第 n 级循环。
喜欢:
foreach($final_output as $res)
{
if(is_array($res))
{
//Then do something, i am not sure how this achivable
}
}
到目前为止我做了什么,但没有成功。
//To find out the how manhy levels are in array
$unique_level = array_unique(array_map(function ($i) { return $i['item_level']; }, $list));
$parent_data = $level_data = array();
foreach($list as $key=>$res)
{
if($res['parent']==0)
{
if(!array_key_exists($res['id'],$parent_data)) // First insert all unique parent at level 1
{
$parent_data[$res['id']] = $res;
}
}
$level_data[$res['parent']][] = array(
'display_name' => $res['display_name'],
'id' => $res['id'],
'parent' => $res['parent'],
);
}
准备使用json
[{"parent":"0","item_level":"1","id":"1","display_name":"着陆页"},{"parent":"1","item_level ":"2","id":"2","display_name":"Current"},{"parent":"2","item_level":"3","id":"5","display_name ":"打开表单"},{"parent":"5","item_level":"4","id":"9","display_name":"博客请求"},{"parent":"9 ","item_level":"5","id":"10","display_name":"Add"},{"parent":"9","item_level":"5","id":"11 ","display_name":"Update"},{"parent":"1","item_level":"2","id":"3","display_name":"Pipeline"},{"parent": "3","item_level":"3","id":"6","display_name":"打开表单"},{"parent":"6","item_level":"4","id" :"12","display_name":"博客请求"},{"parent":"12","item_level":"5","id":"13","display_name":"Add"},{ "父":"12","item_level":"5","id":"14","display_name":"更新"},{"父":"1","item_level":"2", "id":"4","display_name":"BHI"},{"parent":"1","item_level":"2","id":"7","display_name":"添加属性" },{"parent":"1","item_level":"2","id":"8","display_name":"显示子属性"},{"parent":"0","item_level" :"1","id":"1 5","display_name":"Footer"},{"parent":"15","item_level":"2","id":"16","display_name":"电话簿"},{"parent" :"15","item_level":"2","id":"17","display_name":"密码管理员"},{"parent":"0","item_level":"1","id ":"18","display_name":"Archive"},{"parent":"18","item_level":"2","id":"19","display_name":"Edit"},{ "parent":"18","item_level":"2","id":"20","display_name":"View"},{"parent":"18","item_level":"2", "id":"21","display_name":"删除"}]
【问题讨论】: