Php 尝试重新构造数组,使子数组显示在父数组下
我有一个数组,看起来像:Php 尝试重新构造数组,使子数组显示在父数组下,php,recursion,Php,Recursion,我有一个数组,看起来像: $someArray = array( array( "id"=> 1, "name"=> "somename1", "parent"=> 0 ), array( "id"=> 53, "name"=> "somename2", "parent"=> 1 ), array( "id"=> 921, "name"=> "somename3", "pare
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0
),
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1
),
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
)
.
.
.
.
.
.
);
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0,
"children" => array(
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1,
"children" => array(
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
"children" => array(
)
)
)
)
)
)
.
.
.
.
.
.
);
OFC阵列中有更多的单元这只是一小部分
我正在尝试将此数组转换为以下内容:
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0
),
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1
),
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
)
.
.
.
.
.
.
);
$someArray = array(
array(
"id"=> 1,
"name"=> "somename1",
"parent"=> 0,
"children" => array(
array(
"id"=> 53,
"name"=> "somename2",
"parent"=> 1,
"children" => array(
array(
"id"=> 921,
"name"=> "somename3",
"parent"=> 53,
"children" => array(
)
)
)
)
)
)
.
.
.
.
.
.
);
我在过去的一天半里一直在努力,但似乎无法完成
提前谢谢
/*
Gets reversed array,
Returns multidimensional tree array.
*/
function buildTree($parts) {
if (count($parts) == 1) {
return $parts[0];
}
$last_item = array_pop($parts);
$last_item[] = buildTree($parts);
return $last_item;
}
测试:
$parts = array(
array('1','2','3',5),
array('3','8','3',1),
array('1', 5,'2','3'),
array('D','2','3',5),
array('A','2','3',5)
);
var_dump(buildTree(array_reverse($parts)));
输出:
array(5) { [0]=> string(1) "1" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> int(5) [4]=> array(5) {
[0]=> string(1) "3" [1]=> string(1) "8" [2]=> string(1) "3" [3]=> int(1) [4]=> array(5) {
[0]=> string(1) "1" [1]=> int(5) [2]=> string(1) "2" [3]=> string(1) "3" [4]=> array(5) {
[0]=> string(1) "D" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> int(5) [4]=> array(4) {
[0]=> string(1) "A" [1]=> string(1) "2" [2]=> string(1) "3" [3]=> int(5)
} } } } }