选array_merge()拼接纯数字索引数组,自动重编号;选array_replace()保留数字键位置,安全覆盖;选+运算符左侧优先不覆盖;多维数组按需选array_replace_recursive(逐层替换)或array_merge_recursive(同键值合并)。

选哪个取决于你手里数组的结构,以及你希望“相同键”怎么处理、数字索引要不要保留。
要拼接纯数字索引数组(比如 ID 列表、ID 数组)
用 array_merge() 最直接。
- 它把所有数字键元素按顺序串起来,自动重编号为 0、1、2…
- 适合收集多批数据后统一遍历、去重或传给 in_array / array_unique
- 例如:
[10, 20] + [30, 40]→[0=>10, 1=>20, 2=>30, 3=>40]
要保留数字键位置(比如状态位、版本号、固定下标含义)
用 array_replace() 更安全。
- 它不重排索引:输入
[0=>'a', 2=>'b']和[0=>'x', 3=>'y'],结果是[0=>'x', 2=>'b', 3=>'y'] - 只覆盖右侧存在的键,其余原样保留
- 适合配置覆盖、API 响应补全、带语义的索引数组
要左侧值优先、不覆盖也不重排(比如设默认值)
用 + 运算符最简洁。
立即学习“PHP免费学习笔记(深入)”;
- 相同字符串键:左边值留下,右边跳过
- 相同数字键:左边值留下,右边直接忽略(不是覆盖,是丢弃)
- 常用于函数参数默认值合并:
$options = $defaults + $userInput;
要处理多维数组(比如嵌套配置、用户资料)
看你要“覆盖”还是“合并”:
- array_replace_recursive():逐层替换,同名键一律用右侧值(含子数组),数字键仍保留原索引
-
array_merge_recursive():同名字符串键的值会合成数组,比如
'name'=>['Alice','Bob'];数字键追加不重排 - 简单说:想“以新替旧”,选
array_replace_recursive;想“把值攒一起”,选array_merge_recursive



















