PHP中合並兩個數組可以使用+或者array_merge,但這兩個還是有區別的,清楚的了解這兩中處理方法的區別對項目的快速開發來說還是非常有必要的。
主要區別是當兩個或者多個數組中如果出現相同鍵名,需要注意以下兩點:
首先需要說明一下php裡面數組按鍵名大約可以分為字符串(關聯數組)或者數字(數值數組),這裡就不討論多維數組了。
(1)鍵名為數字(數值數組)時,array_merge()不會覆蓋掉原來的值,但+合並數組則會把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)。
(2)鍵名為字符(關聯數組)時,+仍然把最先出現的值作為最終結果返回,把後面的數組擁有相同鍵名的那些值“拋棄”掉,但array_merge()此時會覆蓋掉前面相同鍵名的值。
下面通過幾個具體的例子進行說明:
m:Array (
[0] => a
[1] => b
)
n:Array (
[0] => c
[1] => d
)
m+n 結果為 : Array (
[0] => a
[1] => b
)
array_merge(m,n)結果為 : Array (
[0] => a
[1] => b
[2] => c
[3] => d
)
m:Array (
[1] => a
[2] => b
)
n:Array (
[2] => c
[3] => d
)
m+n結果為 : Array (
[1] => a
[2] => b
[3] => d
)
array_merge(m,n)結果為 : Array (
[0] => a
[1] => b
[2] => c
[3] => d
)
m:Array (
[a] => a
[b] => b
)
n:Array (
[b] => c
[d] => d
)
m+n結果為 : Array (
[a] => a
[b] => b
[d] => d
)
array_merge(m,n)結果為 : Array (
[a] => a
[b] => c
[d] => d
)