array_merge和数组直接相加的区别

今天发现php的数组居然可以直接相加,之前都是用array_merge进行数组的连接操作。

但是试验了一番发现差别还是很大的。


首先是以数字为索引的数组, array_merge会将两个数组按照先后顺序组成一个新的数组

$array1 = array("a", "b", "c");
$array2 = array("d", "e", "f");

// 输出Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
var_dump(array_merge($array1, $array2));
// 输出Array ( [0] => d [1] => e [2] => f [3] => a [4] => b [5] => c )
var_dump(array_merge($array2, $array1));

但是如果两个数字索引的数组直接相加的话,两个数组并不会完全保留,而是保存前者

$array1 = array("a", "b", "c");
$array2 = array("d", "e", "f");

// 输出Array ( [0] => a [1] => b [2] => c ) 
print_r($array1 + $array2);

那么当两个相加的数组大小不一致呢?

$array1 = array("a", "b", "c");
$array2 = array("d", "e", "f");
$array3 = array("g", "h");

// 输出Array ( [0] => d [1] => e [2] => f ) 
print_r($array2 + $array3);
// 输出Array ( [0] => g [1] => h [2] => f )
print_r($array3 + $array2);

可以见到两个以数字为索引的数组相加后的大小是取决于最大的数组,当第一个数组的大小不够时会从后面的数组对应位置取值补充


当数组是以字符串为索引时,array_merge对于相同的key会进行替换,后者取代前者,对于没有重复的key会按顺序进行拼接

$array1 = array("a" => 1, "b" => 1, "d" => 1);
$array2 = array("a" => 2, "b" => 2, "c" => 2);

// 输出Array ( [a] => 2 [b] => 2 [d] => 1 [c] => 2 )
print_r(array_merge($array1, $array2));

如果是相加的话,规则和array_merge类似,但对于相同的key的值是以前者为准

$array1 = array("a" => 1, "b" => 1, "d" => 1);
$array2 = array("a" => 2, "b" => 2, "c" => 2);

// Array ( [a] => 1 [b] => 1 [d] => 1 [c] => 2 )
print_r($array1 + $array2);



欢迎访问我的个人博客

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值