php中数组合并array_merge和+的区别

php中array_merge函数和+操作符都可以实现数组合并的功能,但是两者具有一些差异点,如果在工作中没有很好的理解这一点会造成一些困惑。

array_merge是php的函数,而+是运算操作符。两者都完成数组的合并,如果不搞清楚它们之间的不同,在项目中会遇到很多麻烦。下面整理一下它们的差异点:

array_merge都是将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

1.如果数组的键包含字符串键名时

采用array_merge时该键名后面的值将覆盖前一个值,采用+时会舍弃掉后一个值而保留前面的值。

2.如果数组的键包含数字键名时

采用array_merge时后面的值不会覆盖前一个值,而是附加到后面,如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。采用+时后面的相同键名的值会被舍弃掉。

以下的例子可以加强理解下:

array_merge的例子:

<?php

$a = array('one'=>'a', 'two'=>'b');

$b = array('one'=>'c', 'four'=>'d');

$c = array(3=>'m', 7=>'n');

$d = array(3=>'o', 23=>'p');

var_dump(array_merge($a,$b));

var_dump(array_merge($c,$d));

var_dump(array_merge($a,$c));

?>


输出:

array(3) {

  ["one"]=>

  string(1) "c"

  ["two"]=>

  string(1) "b"

  ["four"]=>

  string(1) "d"

}

array(4) {

  [0]=>

  string(1) "m"

  [1]=>

  string(1) "n"

  [2]=>

  string(1) "o"

  [3]=>

  string(1) "p"

}

array(4) {

  ["one"]=>

  string(1) "a"

  ["two"]=>

  string(1) "b"

  [0]=>

  string(1) "m"

  [1]=>

  string(1) "n"

}

+的例子:


<?php

$a = array('one'=>'a', 'two'=>'b');

$b = array('one'=>'c', 'four'=>'d');

$c = array(3=>'m', 7=>'n');

$d = array(3=>'o', 23=>'p');

var_dump($a+$b);

var_dump($c+$d);

var_dump($a+$c);

?>

输出:

array(3) {

  ["one"]=>

  string(1) "a"

  ["two"]=>

  string(1) "b"

  ["four"]=>

  string(1) "d"

}

array(3) {

  [3]=>

  string(1) "m"

  [7]=>

  string(1) "n"

  [23]=>

  string(1) "p"

}

array(4) {

  ["one"]=>

  string(1) "a"

  ["two"]=>

  string(1) "b"

  [3]=>

  string(1) "m"

  [7]=>

  string(1) "n"

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值