在 PHP 中从平面数组构建树结构
问题:
你有由具有“id”和“parent_id”字段的元素组成的平面数组,其中每个元素最多可以有一位父母和零个或多个孩子。当'parent_id'为0时,该元素是根级项目。目标是将这个平面数组重组为具有子父关系的分层树。
解决方案:
提供的函数 buildTree() 有效地完成了此任务通过迭代输入数组并递归构建树结构。输出树中的每个元素都包含其 ID、父 ID 和子元素数组。
实现:
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; unset($elements[$element['id']]); } } return $branch; }
'unset'调用:
在上面的代码中,unset() 调用对于维护层次结构至关重要 结构。它从原始输入数组中删除已处理的元素,确保元素在树中不重复。
示例:
考虑提供的输入数组:
[_319_] => [...], [_320_] => [...], [_321_] => [...], [_322_] => [...], [_323_] => [...], [_324_] => [...], [_325_] => [...]
处理后,输出树维护父子关系关系:
[_319_] => [...], [_320_] => [ 'id' => '_320_', 'parent_id' => 0, 'children' => [ [_321_] => [...], [_325_] => [...] ] ], [_323_] => [ 'id' => '_323_', 'parent_id' => 0, 'children' => [ [_324_] => [...] ] ]
因此,buildTree() 函数使您能够将具有父子关系的平面元素数组转换为 PHP 中的结构化层次树。
以上是如何在 PHP 中从平面数组构建层次树结构?的详细内容。更多信息请关注PHP中文网其他相关文章!