array_merge在PHP5.6下使用的坑
阿新 • • 發佈:2018-11-02
array_merge是常用的數組合並函式,將多個數組合併到第一個陣列中去,這裡有兩點值得注意:
- array_merge是將第二個引數的資料合併到第一個引數中去,如果有相同的鍵名,則會覆蓋
- 如果第二個引數的鍵是數字鍵名,則會重新生成新的索引鍵名
這個特殊的地點主要是第二個,我們的開發中自定義的鍵名,在PHP5.6環境下使用,如果是純數字格式的鍵名,則使用array_merge時,不會生成新的索引鍵名,但是在PHP5.5及其以前的版本中,如果鍵名為純數字字串,則會預設為鍵名等同於純數字,會生成新的索引
array_merge和+的區別
- array_merge會對第二個引數的陣列中純數字鍵名的值進行重新生成索引,【+】不會
- 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;