合并两个数组的两种方式的异同

本文讨论合并数组的两种方式:$a+$b , array_merge($a,$b)

操作符+,在前一个数的基础上插入后一个数组,假设有同样的抛弃,而array_merge 是在前一个參数基础上插入后一个參数。假设有同样用的key 用后一个覆盖。实比例如以下:

php > $a = array('a'=>'1','b'=>'2','c'=>'3');
php > $b = array('c'=>3,'d'=>'4','e'=>'5');
php > $c = $a+$b;
php > $d = array_merge($a,$b);
php > var_dump($c,$d);
array(5) {
  'a' =>
  string(1) "1"
  'b' =>
  string(1) "2"
  'c' =>
  string(1) "3"
  'd' =>
  string(1) "4"
  'e' =>
  string(1) "5"
}
array(5) {
  'a' =>
  string(1) "1"
  'b' =>
  string(1) "2"
  'c' =>
  int(3)
  'd' =>
  string(1) "4"
  'e' =>
  string(1) "5"
}
php > $e = array_merge($b,$a);
php > var_dump($e);
array(5) {
  'c' =>
  string(1) "3"
  'd' =>
  string(1) "4"
  'e' =>
  string(1) "5"
  'a' =>
  string(1) "1"
  'b' =>
  string(1) "2"
}
php > $f=$b+$a;
php > var_dump($f);
array(5) {
  'c' =>
  int(3)
  'd' =>
  string(1) "4"
  'e' =>
  string(1) "5"
  'a' =>
  string(1) "1"
  'b' =>
  string(1) "2"
}

当两边都是索引数组时。使用array_merge 可能会引起索引重置,如以下这样的情况:

php > $a = array();
php > $b = array(1=>'data');
php > $c = $a+$b;
php > $d = array_merge($a,$b);
php > var_dump($c,$d);
array(1) {
  [1] =>
  string(4) "data"
}
array(1) {
  [0] =>
  string(4) "data"

}


所以,当使用+来合并两个索引数组。值可能会被丢弃,而array_merge就不会,会把反复的索引重置:

php > $a = array(1=>'one',2=>'two',3=>'three');
php > $b = array(3=>'three',4=>'four',5=>'five');
php > $c = $a+$b;
php > $d = array_merge($a,$b);
php > var_dump($c,$d);
array(5) {
  [1] =>
  string(3) "one"
  [2] =>
  string(3) "two"
  [3] =>
  string(5) "three"
  [4] =>
  string(4) "four"
  [5] =>
  string(4) "five"
}
array(6) {
  [0] =>
  string(3) "one"
  [1] =>
  string(3) "two"
  [2] =>
  string(5) "three"
  [3] =>
  string(5) "three"
  [4] =>
  string(4) "four"
  [5] =>
  string(4) "five"
}


转载于:https://www.cnblogs.com/mfmdaoyou/p/6708726.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值