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

如何从平面数据库结果递归构建多维数组?

Barbara Streisand
发布: 2024-12-14 01:40:10
原创
266 人浏览过

How to Recursively Build a Multidimensional Array from Flat Database Results?

从数据库结果递归构建多维数组

从平面数据库结果检索分层数据结构,例如页面和类别菜单,可以使用递归函数。此函数将获取原始数组并根据父子关系将其组织为嵌套数组。

函数:

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;
        }
    }

    return $branch;
}
登录后复制

工作原理:

  1. 该函数接受一个元素数组和一个可选的父 ID,默认为 0。
  2. 迭代数组中的每个元素。
  3. 如果元素的父 ID 与指定的父 ID 匹配,则将其视为该父元素的子元素。
  4. 该函数递归调用自身来查找当前子元素的所有子元素。
  5. 如果该元素有任何子元素,则将它们添加为数组在当前元素的 'children' 键下。
  6. 最后,该函数返回给定父元素的子元素数组。

用法示例:

使用此方法将示例数据库结果转换为多维数组函数:

$tree = buildTree($rows);
登录后复制

其中 $rows 是数据库结果的原始数组。

输出:

生成的分层数组将类似于所需的输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [title] => Parent Page
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 2
                                    [parent_id] => 1
                                    [title] => Sub Page
                                    [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 3
                                                            [parent_id] => 1
                                                            [title] => Sub Sub Page
                                                        )
                                                )
                                )
                        )
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 4
                                    [parent_id] => 0
                                    [title] => Another Parent Page
                                    [children] => Array
                                                (

                                                )
                                )
                        )
        )
)
登录后复制

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

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