1. 程式人生 > >array_merge在PHP5.6下使用的坑

array_merge在PHP5.6下使用的坑

array_merge是常用的數組合並函式,將多個數組合併到第一個陣列中去,這裡有兩點值得注意:

  1. array_merge是將第二個引數的資料合併到第一個引數中去,如果有相同的鍵名,則會覆蓋
  2. 如果第二個引數的鍵是數字鍵名,則會重新生成新的索引鍵名

這個特殊的地點主要是第二個,我們的開發中自定義的鍵名,在PHP5.6環境下使用,如果是純數字格式的鍵名,則使用array_merge時,不會生成新的索引鍵名,但是在PHP5.5及其以前的版本中,如果鍵名為純數字字串,則會預設為鍵名等同於純數字,會生成新的索引

array_merge和+的區別

  1. array_merge會對第二個引數的陣列中純數字鍵名的值進行重新生成索引,【+】不會
  2. array_merge:當兩個陣列中出現相同的鍵名(非數字型別),後面出現的值會覆蓋前面出現的值;【+】:當兩個陣列中出現相同的鍵名(任何型別),後面的都不會被前面的覆蓋

效果用PHP程式碼解釋如下:

//$result = array_merge($array,$insert);
foreach ($insert as $key => $value) {
    if (is_numeric($key)) {
        $array[] = $value;
    } else {
        $array[$key] = $value;
    }
}
$result = $array;

//$result = $array+$insert;
foreach ($insert as $key => $value) {
    if (isset($array[$key])) {
        continue;
    } else {
        $array[$key] = $value;
    }
}
$result = $array;