代码改变世界

php array_merge和运算符+

2018-01-11 18:00  ZengGW  阅读(481)  评论(0编辑  收藏  举报

  其实很多时候我都很疑惑为什么同维度的数组不能直接使用运算+直接进行相加,然后结果就是两个数组合并的在一起的新结果,这个就有点跟array_merge合并函数类似了,接下来就来看下这两种合并的方式到底有些什么样的区别?(下面采取对比的方式来看问题)

一、运算符+

# 第一种情况
$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
var_dump($arr1 + $arr2);
//返回的结果:array('a', 'b')

# 第二种情况
$arr1 = array('a', 'b');
$arr2 = array(3=>'c', 4=>'d');
var_dump($arr1 + $arr2);
//返回的结果:array(0=>'a', 1=>'b', 3=>'c', 4=>'d')

说明:两个一维数组使用运算符+其实是可以相加的

          1.两个数组相加,key值相同的元素结果显示前一个数组的值(注意不是咱们通常说的后边的值覆盖掉前边同key的值);键名相同,数组相加会将最先出现的值作为结果(不区分是否是数字key还是字符串的key);

          2.存在key值不同的元素,这时候相加才会把不同key值对应的元素合并在一个新的数组内

二、array_merge

# 第一种情况
$arr1 = array('a', 'b');
$arr2 = array('c', 'd');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 2=>'c', 3=>'d')

# 第二种情况
$arr1 = array('a', 'b');
$arr2 = array(3=>'c', 4=>'d');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 2=>'c', 3=>'d')

# 第三种情况
$arr1 = array('a', 'b', 'name' => 'e');
$arr2 = array('name'=>'c', 4=>'d');
var_dump(array_merge($arr1, $arr2));
//返回的结果:array(0=>'a', 1=>'b', 'name'=>'c', 2=>'d')

说明:1.第一种情况说明同key的不会被覆盖,而是追加到先出现的值的后边,并且key是根据前边存在的key自增的

           2.第二种情况说明只要不是字符串的key,合并后key都会重新的设置,也是根据前边存在的key自增

           3.第三种情况说明如果存在字符串的key,字符串的key值相同的话,后边出现的值会覆盖掉前边出现的值