PHP array_merge_recursive不能正常工作

时间:2010-01-10 20:44:30

标签: php arrays merge

所以基本上我有两个我要合并的数组...

array(1) { 
    ["first"]=>  
    array(1) { 
        ["second"]=>  
        array(0) { 
        } 
    } 
} 

array(1) { 
    ["second"]=>  
    array(1) { 
        ["third"]=>  
        array(0) { 
        } 
    } 
}

这是我想要实现的结果......

array(1) { 
    ["first"]=>  
    array(1) { 
        ["second"]=>  
        array(1) {
            ["third"]=>  
            array(0) { 
            } 
        } 
    }  
}

但是使用$arr = array_merge_recursive($arr1, $arr2)我得到了这个输出:

array(2) { 
    ["first"]=>  
    array(1) { 
        ["second"]=>  
        array(0) { 
        } 
    } 
    ["second"]=>  
    array(1) { 
        ["third"]=>  
        array(0) { 
        } 
    } 
} 

据我所知,array_merge_recursive应该能得到我想要的东西,但显然不是。什么是我的问题的解决方案?

由于

2 个答案:

答案 0 :(得分:2)

数组在相同的“级别”上合并。您的数组在同一级别上不重叠,一个顶级值为“first”,另一个为“second”。因此,它会产生一个新阵列,两个阵列都位于顶层。

要达到您想要的效果,您需要填写

array_merge_recursive($arr1['first'], $arr2)

然后他们匹配,并将平等地结合您的期望。

您还可以编写一些函数,以递归方式遍历数组,找到数组匹配的级别,然后从那里调用array_merge_recursive

答案 1 :(得分:1)

$array2 = array('third' => array());
$array1['first']['second'] = $array2;