ddddd

php 数组合并4种方法

作者:程序员11 时间:2025-07-22 人气:39 QQ交流群\邮箱:1003265987@qq.com
在 PHP 中,如果你想合并两个数组,并且当键(key)相同时,将值(value)合并而不是替换,你可以使用几种不同的方法来实现这一功能。以下是几种常见的方法:
要展示的内容

方法1:使用 + 操作符

+ 操作符可以用来合并数组,但它只会保留第一个数组中的键值对,如果键在两个数组中都存在,它将使用第二个数组中的值。这不是直接合并值,但我们可以通过一些技巧来实现类似的效果。

$array1 = ['a' => 1, 'b' => 2];
$array2 = ['b' => 3, 'c' => 4];
 
// 先合并,然后手动检查和调整
$result = $array1 + $array2;
 
// 手动处理重复键的情况
foreach ($array2 as $key => $value) {
    if (array_key_exists($key, $result)) {
        $result[$key] += $value; // 合并值
    } else {
        $result[$key] = $value; // 直接添加新键值对
    }
}
 
print_r($result);

方法2:使用 array_merge_recursive()

array_merge_recursive() 函数可以用来合并数组,但它会将数组的值合并成一个数组,这对于数值来说可能不是你想要的结果。但对于字符串或数组的数值合并是有用的。

$array1 = ['a' => 1, 'b' => 2];
$array2 = ['b' => 3, 'c' => 4];
 
$result = array_merge_recursive($array1, $array2);
print_r($result); // 注意这里的 'b' 会变成一个数组 [2, 3]

方法3:自定义函数合并数组

创建一个自定义函数来精确控制如何合并键和值。

function mergeArrays($array1, $array2) {
    foreach ($array2 as $key => $value) {
        if (array_key_exists($key, $array1)) {
            if (is_array($array1[$key]) && is_array($value)) {
                $array1[$key] = array_merge($array1[$key], $value); // 递归合并数组值
            } else {
                $array1[$key] += $value; // 直接相加数值或字符串等
            }
        } else {
            $array1[$key] = $value; // 直接添加新键值对
        }
    }
    return $array1;
}
 
$array1 = ['a' => 1, 'b' => 2];
$array2 = ['b' => 3, 'c' => 4];
$result = mergeArrays($array1, $array2);
print_r($result); // 输出: Array ( [a] => 1 [b] => 5 [c] => 4 )

方法4:使用 array_replace_recursive() 和 array_merge() 的组合(针对更深层次的需求)

$array1 = ['a' => 1, 'b' => ['x' => 2]];
$array2 = ['b' => ['y' => 3], 'c' => 4];
 
// 先使用 array_replace_recursive() 处理顶层键冲突,然后用 array_merge() 处理其他情况
$result = array_replace_recursive($array1, $array2); // 处理顶层键冲突的合并(但不处理嵌套数组的完全合并)
$result = array_merge($result, array_diff_assoc($array2, $array1)); // 添加非冲突的键值对
print_r($result); // 注意这里的 'b' 会是合并后的数组 ['x' => 2, 'y' => 3] 但这不是完全的解决方案,因为它不完全符合嵌套数组的完全合并需求。对于完全合并嵌套数组,使用方法3的自定义函数更合适。

通常,方法3提供了一个灵活且强大的方式来合并数组,特别是当涉及到数值的加法或更深层次的数组合并时。这种方法允许你精确控制何时和如何合并键和值。

温馨提示:

欢迎阅读本文章,觉得有用就多来支持一下,没有能帮到您,还有很多文章,希望有一天能帮到您。

php 数组合并4种方法---相关文章


评论区

ddddd

程序员-学习的网站-想学习编程的码农可以进来看看

首页

视频教程

购物车

我的订单