首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >array_merge正在执行重新索引吗?

array_merge正在执行重新索引吗?
EN

Stack Overflow用户
提问于 2017-04-22 23:32:32
回答 2查看 1.5K关注 0票数 4

假设我有一个关联数组,它的键是字母字符串,如果我将一些内容合并到这个数组中,它将成功合并,而不需要重新索引,如下所示

代码语言:javascript
复制
$arr1 = array('john'=>'JOHN', 'marry'=>'Marry');
$arr1 = array_merge(array('78'=>'Angela'),$arr1);
print_r($arr1);

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

代码语言:javascript
复制
Array
(
    [0] => Angela
    [john] => JOHN
    [marry] => Marry
)

但当我试着做同样的事情时

代码语言:javascript
复制
 $arr1 = array('34'=>'JOHN', '04'=>'Marry');
 $arr1 = array_merge(array('78'=>'Angela'),$arr1);
 print_r($arr1);

然后,它的输出如下所示

代码语言:javascript
复制
Array
(
    [0] => Angela
    [1] => JOHN
    [04] => Marry
)

有没有人能描述一下这个场景.另外,我希望我的数组在合并后是这样的。

代码语言:javascript
复制
Array
    (
        [78] => Angela
        [34] => JOHN
        [04] => Marry
    )

我怎样才能做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2017-04-22 23:42:32

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

要防止此行为,请使用$arr1+$arr2连接数组

票数 2
EN

Stack Overflow用户

发布于 2017-04-22 23:39:52

您不需要使用array_merge(),因为您可以简单地添加数组:

代码语言:javascript
复制
$arr1 = [
  '10' => 'Angela',
  'john' => 'JOHN',
  'marry' => 'Marry',
];

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

$arr3 = $arr2 + $arr1;

- ...带有数字键的输入数组中的值将被重新编号为,并在结果数组中使用从零开始递增的键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43561059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档