一、遇到的问题
使用array_merge()合并数组,键值重新索引了
二、解决
在 PHP 的 array_merge()
函数中,当数组的键是整数时,会重新索引数组。但是,并不会将键值重新排序。
array_merge()
函数会按照参数的顺序将数组合并到结果数组中,并为新数组的整数键分配递增的连续索引值。
以下是一个示例:
$array1 = array(1 => 'a', 2 => 'b'); $array2 = array(3 => 'c', 4 => 'd'); $result = array_merge($array1, $array2); print_r($result);
输出结果为:
Array ( [0] => a [1] => b [2] => c [3] => d )
可以看到,数组的整数键已被重新索引,并按照从 0 开始的连续整数进行分配。
方案一:如果你希望保留原始的整数键值不被重新索引,可以考虑使用 +
运算符来合并数组:
$array1 = array(1 => 'a', 2 => 'b'); $array2 = array(3 => 'c', 4 => 'd'); $result = $array1 + $array2; print_r($result);
输出结果为:
Array ( [1] => a [2] => b [3] => c [4] => d )
使用 +
运算符合并数组时,如果两个数组具有相同的键名,保留第一个数组中的键值。
方案二:把整型数组转为字符串后再使用array_merge()