PHP array_merge_recursive 不能按我的意愿工作

标签 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 应该能得到我想要的东西,但显然没有。我的问题有什么解决方案吗?

谢谢

最佳答案

数组在相同的“级别”上合并。您的数组不在同一级别上重叠,一个数组的顶级值是“第一个”,另一个数组的顶级值是“第二个”。因此,它会生成一个新数组,其中两个数组都位于顶层。

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

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

然后它们会匹配并按照您的期望同等地组合。

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

关于PHP array_merge_recursive 不能按我的意愿工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2038542/

相关文章:

php - 基于订阅的通知实现

php - 在 C 扩展中使用 PHP 文件指针资源

php - 存储过程多问题

arrays - 数组相邻元素匹配算法

javascript - 合并 2 个 Javascript 函数

Mercurial merge - 自动 merge 某些冲突模式

php - 我想将数据从单个表单插入到多个表中,两个表都包含关系

c - 传递给函数的 wchar_t 数组

c - c中数组分配的内存的哪一部分

javascript - 如何组合关联数组中的重复项?