【发布时间】:2014-09-09 03:53:45
【问题描述】:
我想转换一个多维数组,比如:
array (size=3)
0 =>
object(stdClass)[853]
public 'id' => int 1
public 'children' =>
array (size=5)
0 =>
object(stdClass)[852]
public 'id' => int 31
public 'children' =>
array (size=2)
0 =>
object(stdClass)[854]
public 'id' => int 32
1 =>
object(stdClass)[855]
public 'id' => int 36
1 =>
object(stdClass)[856]
public 'id' => int 4
2 =>
object(stdClass)[857]
public 'id' => int 30
3 =>
object(stdClass)[858]
public 'id' => int 8
4 =>
object(stdClass)[859]
public 'id' => int 5
public 'children' =>
array (size=1)
0 =>
object(stdClass)[860]
public 'id' => int 7
1 =>
object(stdClass)[861]
public 'id' => int 2
public 'children' =>
array (size=8)
0 =>
object(stdClass)[862]
public 'id' => int 14
public 'children' =>
array (size=7)
0 =>
object(stdClass)[863]
public 'id' => int 16
1 =>
object(stdClass)[864]
public 'id' => int 20
2 =>
object(stdClass)[865]
public 'id' => int 15
3 =>
object(stdClass)[866]
public 'id' => int 29
4 =>
object(stdClass)[867]
public 'id' => int 19
类似于:
[
'id' => 1,
'parent_id' => 0
],
[
'id' => 31,
'parent' => 1
],
[
'id' => 32,
'parent' => 31
],
[
'id' => 36,
'parent' => 31
],
[
'id' => 4,
'parent' => 1
],
[
'id' => 30,
'parent' => 1
],
[
'id' => 8,
'parent' => 1
],
[
'id' => 5,
'parent' => 1
],
[
'id' => 7,
'parent' => 5
],
[
'id' => 2,
'parent' => 0
],
[
'id' => 14,
'parent' => 2
],
[
'id' => 16,
'parent' => 14
],
[
'id' => 20,
'parent' => 14
]
但我找不到办法做到这一点。 我尝试了很多方法,例如:
public function linksRecursive($array, $res = [], $parent = 0)
{
foreach($array as $arr)
{
$res[] = [
'id' => $arr->id,
'parent' => $parent
];
// echo 'ID: ' . $arr->id . ', PARENT: ' . $parent . "<br>";
$parent = $arr->id;
if(isset($arr->children))
{
$this->linksRecursive($arr->children, $res, $parent);
}
}
return $res;
}
我可以做些什么来解决这个问题?有办法做某事吗? 我正在使用序列化的可排序/可嵌套 JQuery ui 插件,我正在构建它以将新订单保存到我的菜单中。
【问题讨论】:
-
public function linksRecursive($array, &$res = [], $parent = 0) -
谢谢!但是现在我在 parent_id 中遇到了一个小问题:(
标签: php recursion multidimensional-array