php提供array_merge等函数合并数组:索引数组值追加并重编号,关联数组同键值覆盖,+运算符保留左数组键值,array_replace不重排数字索引,array_merge_recursive递归合并多维数组。

如果您需要将两个或多个数组合并为一个数组,PHP 提供了 array_merge 函数来实现这一操作。以下是使用 array_merge 合并两个数组的具体方法:
一、使用 array_merge 函数合并索引数组
array_merge 会将后续数组的值追加到前一个数组末尾,若原数组为纯数字索引,新元素将被重新编号,不会覆盖原有键名。
1、定义第一个索引数组:$arr1 = [1, 2, 3];
2、定义第二个索引数组:$arr2 = [4, 5, 6];
立即学习“PHP免费学习笔记(深入)”;
3、调用 array_merge:$result = array_merge($arr1, $arr2);
4、输出结果:print_r($result); 将显示 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
二、使用 array_merge 合并关联数组
当数组包含字符串键名时,array_merge 会对相同键名的值进行覆盖,后一个数组中同名键的值将替换前一个数组中的对应值。
1、定义第一个关联数组:$arr1 = ['a' => 1, 'b' => 2];
2、定义第二个关联数组:$arr2 = ['b' => 3, 'c' => 4];
3、调用 array_merge:$result = array_merge($arr1, $arr2);
4、输出结果:print_r($result); 将显示 Array ( [a] => 1 [b] => 3 [c] => 4 )
三、使用 + 运算符合并关联数组(替代方案)
加号运算符可实现键名不覆盖的合并,左侧数组的键值对优先保留,右侧数组中不存在于左侧的键值对被添加进来。
1、定义第一个关联数组:$arr1 = ['a' => 1, 'b' => 2];
2、定义第二个关联数组:$arr2 = ['b' => 3, 'c' => 4];
3、使用 + 运算符:$result = $arr1 + $arr2;
4、输出结果:print_r($result); 将显示 Array ( [a] => 1 [b] => 2 [c] => 4 )
四、使用 array_replace 替代合并(保留键名且覆盖值)
array_replace 与 array_merge 在关联数组行为上相似,但对 NULL 值和空数组的处理更明确,且不重排数字索引。
1、定义第一个数组:$arr1 = ['a' => 1, 'b' => 2, 0 => 'x'];
2、定义第二个数组:$arr2 = ['b' => 3, 'c' => 4, 0 => 'y'];
3、调用 array_replace:$result = array_replace($arr1, $arr2);
4、输出结果:print_r($result); 将显示 Array ( [a] => 1 [b] => 3 [c] => 4 [0] => y )
五、使用 array_merge_recursive 实现递归合并
当遇到相同字符串键名时,array_merge_recursive 不覆盖值,而是将值合并为数组,适用于多维结构嵌套场景。
1、定义第一个多维数组:$arr1 = ['user' => ['name' => 'Alice']];
2、定义第二个多维数组:$arr2 = ['user' => ['age' => 30]];
3、调用 array_merge_recursive:$result = array_merge_recursive($arr1, $arr2);
4、输出结果:print_r($result); 将显示 Array ( [user] => Array ( [name] => Alice [age] => 30 ) )









