You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用array_merge合并数组时重复项被移除的问题咨询

解决PHP多数组合并时重复键覆盖的问题

我看你现在用array_merge()合并多个数组,但应该发现了:对于字符串类型的键名,array_merge()会用后续数组的键值直接覆盖前面的——就像你代码里的key1和key2,最后只保留了最后一次合并的结果。下面给你几种不同需求下的解决方案:

1. 保留所有相同键的多维合并

如果你想把相同键下的子数组都保留下来(形成多维数组),可以用array_merge_recursive(),它会自动把相同字符串键的内容合并成一个数组:

$arr1 = array("key1" => array("10","12"));
$arr2 = array("key2" => array("1","11"));
$arr3 = array("key1" => array("10","12"));
$arr4 = array("key2" => array("1","11"));

$res = array_merge_recursive($arr1, $arr2, $arr3, $arr4);
print_r($res);

输出结果:

Array
(
    [key1] => Array
        (
            [0] => Array
                (
                    [0] => 10
                    [1] => 12
                )
            [1] => Array
                (
                    [0] => 10
                    [1] => 12
                )
        )
    [key2] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 11
                )
            [1] => Array
                (
                    [0] => 1
                    [1] => 11
                )
        )
)

2. 合并相同键的子数组为一维(可选去重)

如果你的需求是把相同键下的所有值合并成一个一维数组,甚至去掉重复值,那可以写个自定义循环来处理:

$arrays = [$arr1, $arr2, $arr3, $arr4];
$res = [];

foreach ($arrays as $arr) {
    foreach ($arr as $key => $values) {
        // 如果键不存在,先初始化空数组
        if (!isset($res[$key])) {
            $res[$key] = [];
        }
        // 合并子数组并去重
        $res[$key] = array_unique(array_merge($res[$key], $values));
    }
}

print_r($res);

输出结果(因为原数据没有重复值,所以和你原来的输出一致,但如果有重复值会自动去重):

Array
(
    [key1] => Array
        (
            [0] => 10
            [1] => 12
        )
    [key2] => Array
        (
            [0] => 1
            [1] => 11
        )
)

3. 保留首次出现的键值(不被后续覆盖)

如果你只想保留每个键第一次出现的内容,后续相同键的内容不覆盖它,可以用数组联合运算符+:

$res = $arr1 + $arr2 + $arr3 + $arr4;
print_r($res);

输出结果和你原来用array_merge()的结果一样,但逻辑是保留左侧(先出现)的键值,右侧相同键会被忽略。


内容的提问来源于stack exchange,提问作者Carol.Kar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:15:09