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