array_merge 和 + 的区别

在数组合并的时候总是会碰到是否会覆盖的问题。因此。我做了一下总结。

先贴出结果。

对于 + 

数组中具有相同的键名的值会被覆盖。不论是索引数组还是关联数组

对于array_merge()函数。

如果是关联数组,如果含有相同的键名,后面的值会覆盖前面的值。

如果是索引数组,不会覆盖原来的值,而是直接追加到后面。

<?php 
$arr1 = array(0, 1, 2);
$arr2 = array(7, 8, 9, 10);

print_r($rest1 = $arr1 + $arr2); //0 1 2 10 
print_r($rest2 = $arr2 + $arr1); //7 8 9 10 
print_r(array_merge($arr1, $arr2)); //0 1 2 7 8 9 10 
print_r(array_merge($arr2, $arr1)); //7 8 9 10 0 1 2


$arr3 = array('name' =>'zhangsan', 'age' => 25, 'gender' => 'man');
$arr4 = array('height' => 175, 'weight' => '120');
$arr5 = array('name' =>'lisi', 'age'=> 120 );

print_r($rest3 = $arr3 + $arr4); 
	/*
	Array
		(
		    [name] => zhangsan
		    [age] => 25
		    [gender] => man
		    [height] => 175
		    [weight] => 120
		)
	*/
print_r($rest4 = $arr4 + $arr3); 
	/*
	Array
		(
		    [height] => 175
		    [weight] => 120
		    [name] => zhangsan
		    [age] => 25
		    [gender] => man
		)
	*/

print_r(array_merge($arr3, $arr4));
	/*
	Array
		(
		    [name] => zhangsan
		    [age] => 25
		    [gender] => man
		    [height] => 175
		    [weight] => 120
		)
	*/
print_r(array_merge($arr4, $arr3)); 
	/*
	Array
		(
		    [height] => 175
		    [weight] => 120
		    [name] => zhangsan
		    [age] => 25
		    [gender] => man
		)
	*/
print_r($rest3 = $arr3 + $arr5); 
	/*
	Array
		(
		    [name] => zhangsan
		    [age] => 25
		    [gender] => man
		)
	*/
print_r($rest5 = $arr5 + $arr3);
	/*
	Array
		(
		    [name] => lisi
		    [age] => 120
		    [gender] => man

	*/

print_r(array_merge($arr5, $arr3));
	/*
	Array
	(
	    [name] => zhangsan
	    [age] => 25
	    [gender] => man
	)
	*/
print_r(array_merge($arr3, $arr5));
	/*
	Array
	(
	    [name] => lisi
	    [age] => 120
	    [gender] => man
	)
	*/


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值