[筆記] PHP array_merge與 陣列相加 '+' 比較

馬來西亞 吉隆波

使用array_mergearray+array兩個執行結果不同, 如果依照效能的話, 後者的陣列相加會比前者更好
這兩種方式都是用key與值去做比較, PHP陣列當中, 可以選擇指定key和值, 當然也可以不指定key只有值, 此時預設的key就是0,1,2,3,4....
array_merge($a, $b)的行為是, 當$a與$b有相同的key時, 值會後蓋前, 就是說$b的值會覆蓋$a的值, 如果沒有key的值, 則會附加在陣列尾端, 且index會重新排序
  1. function myTest()
  2. {
  3. $a = [
  4. 'amy' => 'A001',
  5. 'nini' => 'A002',
  6. 1 => 'A003'
  7. ];
  8. $b = [
  9. 'nini' => 'A004',
  10. 'A005',
  11. 'A006',
  12. 'A007'
  13. ];
  14. print_r(array_merge($a,b));
  15. }
執行結果
  1. array(
  2. [amy] => A001
  3. [nini] => A004
  4. [0] => A003
  5. [1] => A005
  6. [2] => A006
  7. [3] => A007
  8. )
如果是array+array的情況, 行為則是相反, 會前蓋後, 沒有key的值也會前蓋後, 且index不會重新排序
依照剛剛的例子:
  1. function myTest_01()
  2. {
  3. $a = [
  4. 'amy' => 'A001',
  5. 'nini' => 'A002',
  6. 1 => 'A003'
  7. ];
  8. $b = [
  9. 'nini' => 'A004',
  10. 'A005',
  11. 'A006',
  12. 'A007'
  13. ];
  14. print_r(array_merge($a,b));
  15. }
執行結果
  1. array(
  2. [amy] => A001
  3. [nini] => A002
  4. [1] => A003
  5. [0] => A005
  6. [2] => A007
  7. )