【发布时间】:2018-07-09 10:03:32
【问题描述】:
我正在使用此处的 buildTree 函数来获取父级的所有子级,但我正在努力调整代码以在树中生成所有可能的分支。
样本数据:
Array
(
[0] => Array
(
[id] => 7
[parent_id] => 6
)
[1] => Array
(
[id] => 8
[parent_id] => 6
)
[2] => Array
(
[id] => 17
[parent_id] => 7
)
[3] => Array
(
[id] => 18
[parent_id] => 7
)
[4] => Array
(
[id] => 20
[parent_id] => 17
)
[5] => Array
(
[id] => 21
[parent_id] => 17
)
[6] => Array
(
[id] => 22
[parent_id] => 17
)
)
构建树:
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;
}
}
我要输出的内容:
Array
(
[0] => Array
(
6, 7, 17, 20
)
[1] => Array
(
6, 7, 17, 21
)
[2] => Array
(
6, 7, 17, 22
)
[3] => Array
(
6, 7, 18
)
[4] => Array
(
6, 8
)
)
我尝试使用 foreach 循环而不是 if($children) 来生成结果数组中的下一个键,并从树的更高层合并现有数据,但没有成功。
非常感谢任何帮助!
【问题讨论】: