我正在尝试将平面数组转换为嵌套数组,具体取决于每个数组项的“级别”数据。 'level'数据显示当前数组项是否为子项,父项或兄弟项。
这是平面阵列:
$flatArray = array(
array('title'=>'Page 1', 'level'=>0),
array('title'=>'Page 2', 'level'=>0),
array('title'=>'Page 3', 'level'=>1),
array('title'=>'Page 4', 'level'=>1),
array('title'=>'Page 5', 'level'=>2),
array('title'=>'Page 6', 'level'=>0),
array('title'=>'Page 7', 'level'=>1),
array('title'=>'Page 8', 'level'=>0)
);
这是预期的结果:
$nestedArray = array(
array('title'=>'Page 1', 'children'=>array()),
array('title'=>'Page 2', 'children'=>array(
array('title'=>'Page 3', 'children'=>array()),
array('title'=>'Page 4', 'children'=>array(
array('title'=>'Page 5', 'children'=>array())
)),
)),
array('title'=>'Page 6', 'children'=>array(
array('title'=>'Page 7', 'children'=>array())
)),
array('title'=>'Page 8', 'children'=>array()),
);
我尝试使用带有数组索引的引用,但这不起作用。
答案 0 :(得分:3)
这有帮助吗?我认为它做对了......也许:D对不起,如果没有。
$nestedArray = array();
foreach ($flatArray as $key => $value) {
$current = &$nestedArray;
$level = $value['level'];
while ($level > 0) {
$last = &$current[count($current) - 1];
$current = &$last['children'];
--$level;
}
$current[] = array('title' => $value['title'], 'children' => array());
}