【发布时间】:2015-07-20 11:02:36
【问题描述】:
我正在寻找一个函数,该函数采用一组页面/类别(来自平面数据库结果)并根据父 ID 回显到嵌套页面/类别<ul>(HTML 无序列表)项目。我想递归地执行此操作,以便可以完成任何级别的嵌套。
+-------+---------------+---------------------------+
| id | parent_id | title |
+-------+---------------+---------------------------+
| 1 | 0 | Parent Page |
| 2 | 1 | Sub Page |
| 3 | 2 | Sub Sub Page |
| 4 | 0 | Another Parent Page |
+-------+---------------+---------------------------+
这是我想在我的视图文件中处理的数组:
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[title] => Parent Page
[children] => Array
(
[0] => Array
(
[id] => 2
[parent_id] => 1
[title] => Sub Page
[children] => Array
(
[0] => Array
(
[id] => 3
[parent_id] => 1
[title] => Sub Sub Page
)
)
)
)
)
[1] => Array
(
[id] => 4
[parent_id] => 0
[title] => Another Parent Page
)
)
我发现this 文章与我发布的文章相似但不重复,这是我找到以下功能的地方,它可以帮助回答。
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element->parent_id == $parentId) {
$children = buildTree($elements, $element->id);
if ($children) {
$element->children = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($rows);
编辑:
我想在下面的结构中回显数据:
<ul>
<li><a href="#">Parent Page</a>
<ul>
<li><a href="#">Sub Page</a>
<ul>
<li><a href="#">Sub Sub Page</a>
</ul>
</li>
</ul>
</li>
<li><a href="#">Another Parent Page</a>
</li>
</ul>
【问题讨论】:
-
我添加了一些修改以使其更清晰
标签: php html recursion multidimensional-array