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

如何合并两个带自定义键的PHP数组并按键索引排序

解决PHP数组合并时保留原键并按索引排序的问题

嘿,这个坑我之前踩过!array_merge() 对数字索引的数组确实会自动重置键名,所以才会出现你看到的顺序混乱情况——它不管你原来的键是什么,只会把所有元素按传入顺序重新从0开始编号,自然不符合你的预期。

要实现保留原键且按键升序排列的合并效果,你可以这样做:

方法步骤:

  • 用+运算符合并两个数组(它会保留原有的数字键,不会重置);
  • 用ksort()对合并后的数组按键进行升序排序,确保元素按0→1→2的顺序排列。

完整代码示例:

$a = array( 1 => 'This should be position #1 in merged array' );
$b = array( 0 => 'This should be position #0 in merged array', 2 => 'This should be position #2 in merged array' );

// 合并数组,保留原键(注意:+运算符会优先保留左边数组的键,这里两边无重复键,所以直接合并所有元素)
$merged = $a + $b;

// 按键升序排序,保持键值关联
ksort($merged);

// 输出结果
print_r($merged);

输出结果:

Array
(
    [0] => This should be position #0 in merged array
    [1] => This should be position #1 in merged array
    [2] => This should be position #2 in merged array
)

补充说明:

  • 为什么不用array_merge()?因为它针对数字索引数组的逻辑是重新索引,会丢弃原键,把所有元素按传入顺序依次从0开始编号,这就是你之前得到混乱顺序的原因。
  • 如果你的数组可能存在重复键,+运算符会优先保留左边数组的键值,而array_replace()会用右边数组的键值覆盖左边的,你可以根据需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:10:13