Php 使用子级从平面阵列创建嵌套阵列

Php 使用子级从平面阵列创建嵌套阵列,php,json,multidimensional-array,nested,Php,Json,Multidimensional Array,Nested,我有一个关于嵌套数组的问题;我在google和stackoverflow上搜索,但找不到适合我需要的解决方案:-/ 我有以下数组: Array ( [0] => Array ( [name] => Europe [children] => Array ( [0] => West [1] =&

我有一个关于嵌套数组的问题;我在google和stackoverflow上搜索,但找不到适合我需要的解决方案:-/

我有以下数组:

Array
(
    [0] => Array
        (
            [name] => Europe
            [children] => Array
                (
                    [0] => West
                    [1] => East
                    [2] => South
                    [3] => North
                    [4] => Zimbabwe
                )
        )
    [1] => Array
        (
            [name] => West
            [children] => Array
                (
                    [0] => Germany
                    [1] => France
                    [2] => Switzerland
                    [3] => Netherlands
                    [4] => Belgium
                    [5] => Luxembourg
                    [6] => United Kingdom
                    [7] => Ireland
                )
        )
    [2] => Array
        (
            [name] => Germany
            [children] => 
        )
    [3] => Array
        (
            [name] => France
            [children] => 
        )
)
我想将其转换为嵌套,意思是:

Array
(
    [0] => Array
        (
            [name] => Europe
            [children] => Array
                (
                    [0] => Array
            (
               [name] => West
               [children] => Array
                (
                  [0]=> Array
                  (
                    [name] => Germany
                  )
                  [1]=> Array
                  (
                    [name] => France
                  )
                )
            )
                    [2] => Array
            (
               [name] => East
               [children] => Array
                (
                  [0]=> Array
                  (
                    [name] => Poland
                  )
                  [1]=> Array
                  (
                    [name] => Austria
                  )
                )
            )
        )
        )
)
你有什么想法吗

提前谢谢

foreach ($unnested_ary as $one_k => $one_v)
{
    foreach ($one_v as $two_k => $two_v)
    {
        if ($two_k == 'children')
        {
            foreach ($two_v as $three_k => $three_v)
            {
                $unnested_array[$one_k][$two_k][$three_k][] = array(array(
                    'name' => $three_v
                ));
            }
        }
    }
}

我不确定我是否正确地嵌套了它,但是您应该了解这个想法并使用这个代码。这基本上应该像您所要求的那样创建新的键和值。

您可以在循环中使用循环,直到达到需要修改数组的部分。您好,fab,实际上我还没有尝试任何操作。老实说,我不知道如何开始。。。这应该是递归函数吗?你好,Dugi,谢谢你的回答。实际上,我认为我应该使用递归函数,因为我事先不知道我将拥有多少个级别。我的数组只是一个例子。我尝试了以下操作,但没有正常工作:函数buildTree($inputarray){$arrayout=array();foreach($arrayelt作为$arrayelt){if(is_数组($arrayelt['children']){$arrayout['name']=$inputarray['name'];buildTree($inputarray['children']);}否则{$arrayout['name']=$inputarray['name']}返回$arrayout;}