array_merge是否执行重建索引?

时间:2017-04-22 15:32:32

标签: php arrays array-merge

假设我有一个关联数组,其键是字母字符串,如果我将某些内容合并到此数组,它将成功合并,而无需重新索引,如

$arr1 = array('john'=>'JOHN', 'marry'=>'Marry');
$arr1 = array_merge(array('78'=>'Angela'),$arr1);
print_r($arr1);

然后这将正确地将新组件合并到数组,其输出将是

Array
(
    [0] => Angela
    [john] => JOHN
    [marry] => Marry
)

但是当我尝试这样的事情时

 $arr1 = array('34'=>'JOHN', '04'=>'Marry');
 $arr1 = array_merge(array('78'=>'Angela'),$arr1);
 print_r($arr1);

然后它的输出就像这样

Array
(
    [0] => Angela
    [1] => JOHN
    [04] => Marry
)

任何人都可以描述这种情况..... 此外,我希望我的数组在合并之后就像这样......

Array
    (
        [78] => Angela
        [34] => JOHN
        [04] => Marry
    )

我怎样才能实现?

2 个答案:

答案 0 :(得分:2)

根据定义array_merge将重新索引数字索引。带有数值的字符串也是数字索引。

要防止此行为,请使用$ arr1 + $ arr2

连接数组

答案 1 :(得分:1)

您不需要使用array_merge(),因为您只需添加数组:

$arr1 = [
  '10' => 'Angela',
  'john' => 'JOHN',
  'marry' => 'Marry',
];

$arr2 = [
  '78' => 'Angela'
];

$arr3 = $arr2 + $arr1;
  

array_merge() - 使用数字键输入数组中的值 重新编号 ,递增键从零开始在结果数组中。