【发布时间】:2012-01-09 15:31:41
【问题描述】:
所以,我得到了这个数组(从数据库收集数据):
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
)
[1] => Array
(
[id] => 2
[parent_id] => 0
)
[2] => Array
(
[id] => 3
[parent_id] => 2
)
[3] => Array
(
[id] => 4
[parent_id] => 2
)
[4] => Array
(
[id] => 5
[parent_id] => 4
)
)
我正在尝试像这样创建和排序数组:
Array
(
[1] => Array
(
[parent_id] => 0
)
[2] => Array
(
[parent_id] => 0
[children] => Array
(
[3] => Array
(
[parent_id] => 2
)
[4] => Array
(
[parent_id] => 2
[children] => Array
(
[5] => Array
(
[parent_id] => 4
)
)
)
)
)
)
我尝试使用以下代码:
function placeInParent(&$newList, $item)
{
if (isset($newList[$item['parent_id']]))
{
$newList[$item['parent_id']]['children'][$item['id']] = $item;
return true;
}
foreach ($newList as $newItem)
{
if (isset($newItem['children']))
{
if (placeInParent($newItem['children'], $item))
{
return true;
}
}
}
return false;
}
$oldList = (first array above)
$newList = array();
foreach ($oldList as $item)
{
if ($item['parent_id'] == 0)
{
$newList[$item['id']] = $item;
}
else
{
placeInParent($newList, $item);
}
}
但问题是我只得到了数组的前 2 个级别!最后一个丢失了..我的有序数组结果如下:
Array
(
[1] => Array
(
[parent_id] => 0
)
[2] => Array
(
[parent_id] => 0
[children] => Array
(
[3] => Array
(
[parent_id] => 2
)
[4] => Array
(
[parent_id] => 2
)
)
)
)
我就是不知道哪里搞砸了:\帮助?
【问题讨论】: