PHP数组合并 array_merge 与 + 的差异
在PHP数组合并出过几次问题都没记住,写下来加强一点记忆
PHP数组在合并时,使用 array_merge 与 + 的差异:
1、array_merge(array $array1
[, array $...
])
a、如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
b、如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
c、如果输入只有一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
2、$array1 + $array2
a、两个数组中有的相同的键名,则只用左边数组中的,右边的被忽略。
这两种合并的效果类似如下(不过还是看看源码的靠谱):
1 $array1 = array("name" => "wing", "good", 322222=>2, 4); 2 $array2 = array("a", "b", "color" => "green", "hello" => "word", 3=>4); 3 4 // array1 + array2 5 function addArray($arr1 = array(), $arr2 = array()) { 6 if(!empty($arr2)) { 7 foreach($arr2 as $key=>$value) { 8 if(!isset($arr1[$key])) { 9 $arr1[$key] = $value; 10 } 11 } 12 } 13 return $arr1; 14 } 15 16 // array_merge 17 function arrayMerge($arr1 = array(), $arr2 = array()) { 18 $result = array(); 19 foreach(array($arr1, $arr2) as $arr) { 20 if(!empty($arr)) { 21 foreach($arr as $key=>$value) { 22 if(!is_numeric($key)) { 23 $result[$key] = $value; 24 } else { 25 $result[] = $value; 26 } 27 } 28 } 29 } 30 return $result; 31 }