在 PHP 中从平面数组构建树
在 PHP 中,从平面数组构建树数据结构可能具有挑战性。但是,可以通过应用递归和理解平面数组中的父子关系来简化此任务。
给定一个平面数组,其中每个元素都有一个“id”和一个“parent_id”,目标就是将其转换为层次树。如果结果树中的每个元素有子元素,则它应该有一个“children”属性。
解决方案
提供的代码尝试递归创建树,但它将元素添加到分支后未能删除该元素,导致同一元素出现多个副本。要解决这个问题,我们需要在将元素添加到分支后从平面数组中删除该元素。
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['id']] = $element; unset($elements[$element['id']]); } } return $branch; }
说明
生成的数组将是一个分层树,每个节点都包含其子节点作为嵌套数组,从而清晰地表示原始平面数组中的父子关系。
以上是如何在 PHP 中从平面数组高效构建树结构?的详细内容。更多信息请关注PHP中文网其他相关文章!