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

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

Patricia Arquette
Patricia Arquette原创
2024-12-23 10:53:09546浏览

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

从数据库结果构造多维数组的递归函数

问题:

您寻求一个递归函数能够从扁平数据库结果转换页面和类别数组到具有结构化层次关系的嵌套数组中。

解决方案:

提供的解决方案提供了一种简单且通用的方法:

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. 初始执行(ParentId = 0):

    • 考虑整个元素数组。
    • 标识parent_id等于0的元素(root节点)。
    • 在这些元素上递归调用 buildTree 以查找其子元素。
  2. 递归执行(ParentId != 0):

    • 仅考虑与指定匹配的元素parent_id。
    • 在这些元素上递归调用 buildTree 以查找其子元素。
  3. 构建层次结构:

    • 被识别为当前父元素的子元素被合并到数组。
    • 此数组被分配给父元素的“children”属性。
  4. 返回结果:

    • 递归调用返回每个级别的子元素数组
    • 该函数最终返回一个代表层次结构的完整嵌套数组。

通过将此函数应用于数据库结果,您将获得一个有组织的具有细粒度层次关系的数组,如您所需的输出所示。这种方法用途广泛,可以应用于页面和类别。

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

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