array_merge是PHP中合并数组的常用函数,数字索引会重排,字符串键后值覆盖前值;传入非数组会警告并返回null;如需不覆盖可用+运算符。

array_merge 是 PHP 中合并数组最常用、最直观的函数,它会把一个或多个数组的键值“拼接”起来,生成一个新数组。
基本用法:合并两个普通索引数组
如果两个数组都是纯数字索引(如 [1, 2] 和 [3, 4]),array_merge 会重新索引,从 0 开始连续编号:
$a = [10, 20]; $b = [30, 40]; $result = array_merge($a, $b); // 结果:[10, 20, 30, 40] —— 索引变为 0,1,2,3
合并关联数组:同名字符串键会被覆盖
当数组含有字符串键(如 ['name' => 'Alice'])时,后出现的同名键会覆盖前面的值:
$user1 = ['name' => 'Alice', 'age' => 25]; $user2 = ['age' => 30, 'city' => 'Beijing']; $result = array_merge($user1, $user2); // 结果:['name' => 'Alice', 'age' => 30, 'city' => 'Beijing']
- 注意:
'age'被$user2的值覆盖了 - 键顺序按参数传入顺序排列,不是按字母或定义顺序
合并时有空数组或非数组?没问题,但要小心
array_merge 要求所有参数都是数组。如果传入非数组(比如 null、string),会触发警告(Warning)并返回 null:
$a = ['x' => 1]; $result = array_merge($a, null); // ⚠️ Warning: array_merge(): Expected parameter 2 to be an array
- 安全做法:合并前用
is_array()判断,或用(array)$var强转(例如array_merge($a, (array)$b)) - 空数组
[]是合法数组,可直接参与合并,不影响结果
想保留原键不覆盖?试试 + 合并运算符
如果希望合并关联数组时“不覆盖”,而是“左边优先”,可以用数组加号 +:
$a = ['name' => 'Alice', 'age' => 25]; $b = ['age' => 30, 'city' => 'Beijing']; $result = $a + $b; // 结果:['name' => 'Alice', 'age' => 25, 'city' => 'Beijing'] —— $a 的 age 保留
-
+只适用于关联数组;对数字索引,它会忽略右边重复索引,不重排 -
array_merge和+行为不同,选哪个取决于你的业务逻辑
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











