从数据库结果递归生成多维数组
在此场景中,目标是构造从数据库检索的分层数据的嵌套数组表示数据库查询。结果表包含具有父子关系的页面或类别。
为了实现此目的,我们使用递归函数 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中文网其他相关文章!