我环顾了互联网,并没有完全找到我要找的东西。我有一个平面数组,每个元素都包含一个“id”和一个“parent_id”。每个元素只有一个父元素,但可能有多个子元素。如果 parent_id = 0,则将其视为根级别项。我正试图将我的平面阵列变成一棵树。我发现的其他示例仅将元素复制到父元素,但原始元素仍然存在。
编辑
起始数组的每个元素都是从一个单独的 XML 文件中读取的。如果文件没有父级,则文件本身将具有“0”作为 parent_id 的值。键实际上是字符串。
我很抱歉之前的混乱。希望这更清楚:
/编辑
我的起始数组:
大批
(
[_319_] => 数组
(
[id] => 0
[parent_id] => 0
)
[_320_] => 数组
(
[id] => _320_
[parent_id] => 0
)
[_321_] => 数组
(
[id] => _321_
[parent_id] => _320_
)
[_322_] => 数组
(
[id] => _322_
[parent_id] => _321_
)
[_323_] => 数组
(
[id] => _323_
[parent_id] => 0
)
[_324_] => 数组
(
[id] => _324_
[parent_id] => _323_
)
[_325_] => 数组
(
[id] => _325_
[parent_id] => _320_
)
)
生成树后的结果数组:
大批
(
[_319_] => 数组
(
[id] => _319_
[parent_id] => 0
)
[_320_] => 数组
(
[id] => _320_
[parent_id] => 0
[孩子] => 数组
(
[_321_] => 数组
(
[id] => _321_
[parent_id] => _320_
[孩子] => 数组
(
[_322_] => 数组
(
[id] => _322_
[parent_id] => _321_
)
)
)
[_325_] => 数组
(
[id] => _325_
[parent_id] => _320_
)
)
[_323_] => 数组
(
[id] => _323_
[parent_id] => 0
[孩子] => 数组
(
[_324_] => 数组
(
[id] => _324_
[parent_id] => _323_
)
)
)
非常感谢任何帮助/指导!
到目前为止我有一些代码:
函数 buildTree(数组 &$elements, $parentId = 0) {
$分支 = 数组();
foreach ($elements 作为 $element) {
if ($element['parent_id'] == $parentId) {
$children = $this->buildTree($elements, $element['id']);
如果($儿童){
$element['children'] = $children;
}
$分支[] = $元素;
}
}
返回$分支;
}