【发布时间】:2017-04-27 03:46:00
【问题描述】:
假设我有一个表,其中包含表示树层次结构的级别记录
id group parent_group_id
--------- ---------- ---------------
1 Parent 1 NULL
2 Parent 2 NULL
3 Parent 3 NULL
4 Child 1 1
5 Child 2 2
6 Child 3 2
7 Child 4 6
我需要构建一个递归函数来构建一个多维嵌套数组,以便它从“顶部”开始,首先构建具有 NULL 的 parent_group_id 的行的顶级数组。快进几次迭代,我希望最终得到一个像这样的对象
$result = array(
[0] => array(
'id' => 1,
'group' => 'Parent 1',
'parent_group_id' => NULL,
'children' => array(
[0] => array(
'id' => 4,
'group' => 'Child 1'
'parent_group_id' => 1,
'children' => NULL)),
[1] => array(
'id' => 2,
'group' => 'Parent 2',
'parent_group_id' => NULL,
'children' => array(
[0] => array(
'id' => 5,
'group' => 'Child 2'
'parent_group_id' => 2,
'children' => NULL),
[1] => array(
'id' => 6,
'group' => 'Child 3'
'parent_group_id' => 2,
'children' => array(
[0] => array(
'id' => 1,
'group' => 'Child 4'
'parent_group_id' => 6,
'children' => NULL)))
构建这样的东西的最佳方法是什么?我需要确保它遍历每个“分支”。我猜当它获得顶级父母的 id 时,它会继续检查是否存在任何行,其 parent_group_id 等于第一次运行时的每个 id。然后,如果它找到孩子,获取这些孩子的 id,然后再次检查孩子是否存在。以此类推,直到用完要检查的 id。
我不熟悉 foreach 循环来完成这样的事情。
【问题讨论】:
标签: php mysql arrays codeigniter multidimensional-array