我在互联网上找了一圈,仍然没有找到我要的内容。我有一个平面数组,每个元素都包含一个“id”和一个“parent_id”。每个元素只会有一个父级,但可能有多个子级。如果parent_id = 0,则视为根级项。我正在尝试将我的平面数组转换成树形结构。我发现的其他示例只是将元素复制到父级,但原始元素仍然存在。
编辑
起始数组的每个元素都从单独的XML文件中读取。如果没有父级,则parent_id的值为“0”。键实际上是字符串。
对之前的混淆表示抱歉。希望这样更清楚:
/编辑
我的起始数组:
结果数组(树形结构):
编辑
起始数组的每个元素都从单独的XML文件中读取。如果没有父级,则parent_id的值为“0”。键实际上是字符串。
对之前的混淆表示抱歉。希望这样更清楚:
/编辑
我的起始数组:
结果数组(树形结构):
function buildTree(array &$elements, $parentId = 0) { $branch = array();
foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = $this->buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[] = $element; } }
return $branch; }
这段代码用于构建一个树形结构,输入一个多维数组 $elements 和父级 ID $parentId。
首先,定义了一个名为 $branch 的空数组,用于保存构建好的树形结构。
然后,使用 foreach 循环遍历 $elements 数组中的每个元素。如果该元素的 parent_id 等于当前传入的 parentId,则说明这个元素是当前节点的子节点,需要将其加入到 $branch 数组中,并递归调用 buildTree 函数,查找该元素是否还有子节点。
最后,返回 $branch 数组,即为构建好的树形结构。