首页 >后端开发 >php教程 >如何从分层数据库数据递归构建多维数组?

如何从分层数据库数据递归构建多维数组?

DDD
DDD原创
2024-12-16 03:10:09948浏览

How to Recursively Build a Multidimensional Array from Hierarchical Database Data?

从数据库结果递归生成多维数组

在此场景中,目标是构造从数据库检索的分层数据的嵌套数组表示数据库查询。结果表包含具有父子关系的页面或类别。

为了实现此目的,我们使用递归函数 buildTree()。此函数采用一个元素数组和一个可选的父 ID(默认为 0)。它迭代每个元素,识别那些具有指定父 ID 的元素。

对于每个子元素,该函数递归调用自身来获取其子树。然后,子元素会用其子元素进行扩充,从而形成层次结构。此过程持续进行,直到处理完所有元素,生成一个反映分层数据结构的嵌套数组。

示例

考虑前面提供的数据库表:

id parent_id title
1 0 Parent Page
2 1 Sub Page
3 2 Sub Sub Page
4 0 Another Parent Page

使用 buildTree() 函数,我们可以生成所需的嵌套数组:

$elements = [
    ['id' => 1, 'parent_id' => 0, 'title' => 'Parent Page'],
    ['id' => 2, 'parent_id' => 1, 'title' => 'Sub Page'],
    ['id' => 3, 'parent_id' => 2, 'title' => 'Sub Sub Page'],
    ['id' => 4, 'parent_id' => 0, 'title' => 'Another Parent Page'],
];

$tree = buildTree($elements);

输出 $tree 将是:

[
    [
        'id' => 1,
        'parent_id' => 0,
        'title' => 'Parent Page',
        'children' => [
            [
                'id' => 2,
                'parent_id' => 1,
                'title' => 'Sub Page',
                'children' => [
                    [
                        'id' => 3,
                        'parent_id' => 2,
                        'title' => 'Sub Sub Page',
                    ]
                ]
            ]
        ]
    ],
    [
        'id' => 4,
        'parent_id' => 0,
        'title' => 'Another Parent Page',
    ]
]

这个嵌套数组保留了数据库表中定义的层次关系,可以高效地访问和处理嵌套中的数据结构。

以上是如何从分层数据库数据递归构建多维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn