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) 
} } } } }