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 }

 

 

posted @ 2016-04-06 19:09  高兴的翅膀  阅读(428)  评论(0编辑  收藏  举报