我想使用HTML列表和PHP从adatabase构建组织树,我可以升级到第二级但我想构建它以便它可以拥有无限的可能性。有什么建议吗?
这是我到目前为止所做的:
我的数据(实际数据的数字是fk_ids
)
level | parent | children
----------------------------
1 1 2
2 2 3
2 2 4 (has two children in level 4, becomes a parent)
2 2 5 (same as level 4 info)
3 3 8
3 3 9
4 4 10
4 4 11
4 5 13
4 5 14
level(1)
|
level(2)
|
---------------------
level 3 | | |
3 4 5
| |
---------- -------------
| | | |
level 4 10 11 13 14
10,11,12,14 can also have children
这是我的PHP代码:
function getHierarchy(){
$levels = $this->db
->select('level')
->group_by('level')
->get('tbl_org_hierarchy')
->result();
echo '<pre>';
print_r($levels);
echo '</pre>';
foreach ($levels as $l):
$hierarchy = $this->db
->where('parent',$l->level)
->get('tbl_org_hierarchy')
->result();
$structure[] = $hierarchy;
endforeach;
echo '<pre>';
print_r($structure);
echo '</pre>';
}
输出
Array
(
[0] => Array
(
[0] => stdClass Object
(
[id] => 1
[level] => 1
[parent] => 1
[children] => 2
)
)
[1] => Array
(
[0] => stdClass Object
(
[id] => 2
[level] => 2
[parent] => 2
[children] => 3
)
[1] => stdClass Object
(
[id] => 3
[level] => 2
[parent] => 2
[children] => 4
)
[2] => stdClass Object
(
[id] => 4
[level] => 2
[parent] => 2
[children] => 5
)
[3] => stdClass Object
(
[id] => 5
[level] => 2
[parent] => 2
[children] => 6
)
[4] => stdClass Object
(
[id] => 6
[level] => 2
[parent] => 2
[children] => 7
)
)
[2] => Array
(
[0] => stdClass Object
(
[id] => 7
[level] => 3
[parent] => 3
[children] => 8
)
[1] => stdClass Object
(
[id] => 8
[level] => 3
[parent] => 3
[children] => 9
)
)
[3] => Array
(
[0] => stdClass Object
(
[id] => 9
[level] => 4
[parent] => 4
[children] => 10
)
[1] => stdClass Object
(
[id] => 10
[level] => 4
[parent] => 4
[children] => 11
)
)
)
我怎样才能让它做一个嵌套循环,即使4是3级的2到2的父级,它也是4级的父级和11级的
答案 0 :(得分:0)
使用您的代码尝试以下功能
function fetchCategoryTreeList($parent = 0, $user_tree_array = '') {
if (!is_array($user_tree_array))
$user_tree_array = array();
$levels = $this->db
->select('level')
->where('parent',$parent)
->group_by('level')
->get('tbl_org_hierarchy')
->result();
if (count(levels) > 0)
{
$user_tree_array[] = "<ul>";
foreach($levels as $row)
{
$user_tree_array[] = "<li>". $row->level."</li>";
$user_tree_array = fetchCategoryTreeList($row->level, $user_tree_array);
}
$user_tree_array[] = "</ul><br/>";
}
return $user_tree_array;
}
$res = fetchCategoryTreeList();