【发布时间】:2019-07-07 10:35:42
【问题描述】:
我想构建一个由部门(父)和子部门(子)组成的树视图。在我的数据库中,我认为我有一个很好的结构,如下所示:
--------------------------------------------
Dep_name | dep_id | dep_parent_id
--------------------------------------------
Accounting | 1 | 0
Human-Resources | 2 | 0
IT | 3 | 0
Network | 4 | 3
Web Development | 5 | 3
Front-End | 6 | 5
Back-End | 7 | 5
dep_parent_id 为 0 的部门 ---> 他们没有父部门。例如,Web Development 和 Network 是 IT 部门的子项。前端和后端是 Web 开发的子级。
我找到了一个递归函数,它适合从这个数据库表中获取所有数据并将它们放在一个正确结构的数组中。但问题是我不知道如何像树视图一样显示这个数组。 比如这样
- 部门
- 会计
- 人力资源
- 它
- 网络
- 网页开发
- 前端
- 后端
.....等等......
在我的数据库中,我认为我的结构很好,如下所示:
我尝试使用非常简单的方式打印数组
print_r($tree);
它会这样打印:
Array (
[0] => stdClass Object (
[Dep_name] => Accounting and Finance
[dep_id] => 1
[dep_parent_id] => 0
)
[1] => stdClass Object (
[Dep_name] => Human-Recources
[dep_id] => 2
[dep_parent_id] => 0
)
[2] => stdClass Object (
[Dep_name] => IT
[dep_id] => 3
[dep_parent_id] => 0
[children] => Array (
[0] => stdClass Object (
[Dep_name] => Network
[dep_id] => 5
[dep_parent_id] => 3
)
[1] => stdClass Object (
[Dep_name] => Web Development
[dep_id] => 6
[dep_parent_id] => 3
[children] => Array (
[0] => stdClass Object (
[Dep_name] => Front-End
[dep_id] => 7
[dep_parent_id] => 6
)
[1] => stdClass Object (
[Dep_name] => Back-End
[dep_id] => 8
[dep_parent_id] => 6
)
)
)
)
)
[3] => stdClass Object (
[Dep_name] => Marketing
[dep_id] => 4
[dep_parent_id] => 0
[children] => Array (
[0] => stdClass Object (
[Dep_name] => web-marketing
[dep_id] => 9
[dep_parent_id] => 4
)
)
)
)
这是我的函数,它从数组 $data 中获取数据库表中的数据并构建一个树数组 $branch。
function buildTree(array $data, $parentId = 0)
{
$branch = array();
foreach ($data as $element)
{
if ($element->dep_parent_id == $parentId)
{
$children = buildTree($data, $element->dep_id);
if ($children)
{
$element->children = $children;
}
$branch[] = $element;
}
}
return $branch;
}
然后我使用 :
打印它print_r(buildTree($data));
如果您能帮我解决这个问题并在 html 中显示我从函数 buildTree($data) 返回的数组 $branch 中的树视图结构,我将不胜感激。
【问题讨论】:
-
您的问题是什么?怎么打印?
-
是的,我的意思是如何使用 html 在树视图结构中打印数组
标签: php html arrays codeigniter treeview