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值相同的话,后边出现的值会覆盖掉前边出现的值
简单、坚定