You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何让合并数组时第二个数组的重复键元素排在末尾?

如何让array_merge后重复键排在数组末尾?

嘿,这个问题我之前也碰到过!array_merge()对于关联数组的键顺序处理确实有点“固执”——它会保留第一个数组里键的原始位置,哪怕后面的数组覆盖了对应的值,位置还是不会变。要让重复的键挪到合并后数组的末尾,其实可以用一个简洁的技巧:

解决方案代码

$arr1 = ['p' => 2, 'pm' => 1];
$arr2 = ['p' => ''];

// 第一步:从arr1中移除所有和arr2重复的键
$arr1Clean = array_diff_key($arr1, $arr2);
// 第二步:先合并无重复的部分,再追加arr2的内容
$result = array_merge($arr1Clean, $arr2);

print_r($result);

输出结果

Array ( [pm] => 1 [p] =>  )

逻辑说明

  • array_diff_key($arr1, $arr2)会返回arr1中所有不存在于arr2的键值对,这里就是['pm' => 1]
  • 再用array_merge()把这个无重复的数组和arr2合并,这样arr2里的键(包括重复的p)就会全部排在合并后数组的末尾
  • 如果arr2有多个键(比如['p' => '', 'x' => 3]),这个方法同样适用,会把所有arr2的键都放到最后

内容的提问来源于stack exchange,提问作者Martin AJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:31:16