首页 > 后端开发 > php教程 > 如何在 PHP 中从平面数组构建层次树结构?

如何在 PHP 中从平面数组构建层次树结构?

Barbara Streisand
发布: 2024-11-27 18:33:15
原创
210 人浏览过

How to Build a Hierarchical Tree Structure from a Flat Array in PHP?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板