array_replace() 用右侧数组值覆盖左侧同名键,仅替换左侧已存在键,不添加新键,且为浅层替换不递归处理嵌套数组。

右边生效。array_replace() 在遇到相同键时,会用右侧数组的值覆盖左侧数组的值。
覆盖规则很明确
array_replace($array1, $array2, $array3) 从左到右依次处理: - 先用 $array2 覆盖 $array1 中同名键 - 再用 $array3 覆盖前一步结果中的同名键 - 后出现的数组优先级更高
只替换已存在的键,不追加新键
注意:array_replace() 不是合并全部键值,它只替换「左侧数组中已存在」的键。 右侧数组里多出来的键会被忽略。
- $a = ['a' => 1, 'b' => 2];
- $b = ['b' => 99, 'c' => 3];
- array_replace($a, $b) → ['a' => 1, 'b' => 99]('c' 不出现)
想完全合并并以右为准?用 + 或 array_merge()
如果希望保留所有键、且冲突时右边覆盖左边,更常用的是:
- + 运算符:$a + $b → 左边键优先;但 $b + $a → 右边键优先(即把要“胜出”的数组放前面)
- array_merge($a, $b):直接顺序合并,后数组覆盖前数组同名键,且会重新索引数字键
嵌套数组不会递归处理
array_replace() 是浅层替换。如果键对应的值是数组,整个值(子数组)会被直接替换,而不是逐个合并子元素。
- $a = ['user' => ['name' => 'A', 'age' => 20]];
- $b = ['user' => ['age' => 25]];
- 结果是 ['user' => ['age' => 25]](整个子数组被替换,name 消失)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











