Baik operator "+" maupun array_merge():array array_merge (array array1, array array2 [, array ...]) dapat menggabungkan beberapa array, namun ada sedikit perbedaan dalam proses penggunaannya.
array_merge dijelaskan dalam manual referensi sebagai berikut:
array_merge() menggabungkan sel dari dua atau lebih array, dengan nilai dalam satu array ditambahkan ke array sebelumnya. Mengembalikan larik yang dihasilkan.
Jika array masukan memiliki nama kunci string yang sama, nilai setelah nama kunci akan menimpa nilai sebelumnya. Namun, jika array berisi kunci numerik, nilai berikutnya tidak akan menimpa nilai aslinya tetapi akan ditambahkan ke dalamnya.
Perbedaan keduanya adalah:
1. Ketika nama kunci array adalah nama kunci numerik, dan ada KUNCI numerik dengan nama yang sama di dua array yang akan digabungkan, penggunaan array_merge() tidak akan menimpa nilai asli, sedangkan menggunakan "+" untuk menggabungkan array akan menggantikan yang pertama. Nilai dikembalikan sebagai hasil akhir, dan nilai-nilai dalam array berikutnya dengan nama kunci yang sama akan "dibuang" (catatan: ini tidak menimpa tetapi mempertahankan nilai yang muncul pertama kali). Contoh:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*Hasilnya adalah nilai $array2*/
print_r($hasil);
$hasil = $array1 + $array2 ;/*Hasilnya adalah nilai $array1*/
print_r($hasil);
$result3 = array_merge($array2,$array1);/*Hasilnya adalah nilai $array2 dan $array1, dan nama kunci ditetapkan kembali*/
print_r($hasil3);
$result4 = array_merge($array1,$array2);/*Hasilnya adalah nilai $array1 dan $array2, dan nama kunci ditetapkan kembali*/
print_r($hasil4);
Hasil keluarannya adalah:
Larik ( [1] => data )
Larik ( [1] => 0 )
Himpunan (
[0] =>data
[1] => 0
)
Himpunan
(
[0] => 0
[1] => data
)
2. Jika nama kunci array yang sama berupa karakter, operator "+" sama dengan jika nama kunci berupa angka, namun array_merge() akan menimpa nilai sebelumnya dari nama kunci yang sama.
contoh:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*Hasilnya adalah nilai $array2*/
print_r($hasil);
$hasil = $array1 + $array2 ;/*Hasilnya adalah nilai $array1*/
print_r($hasil);
$hasil3 = array_merge($array2,$array1);/*Hasilnya adalah $array1*/
print_r($hasil3);
$result4 = array_merge($array1,$array2);/*Hasilnya adalah $array2*/
print_r($hasil4);
Hasil outputnya adalah :
Array ([asd] => data)
Himpunan ( [asd] => 0 )
Himpunan ( [asd] => 0 )
Himpunan ( [asd] => data )