「+」運算子和array_merge():array array_merge ( array array1, array array2 [, array ...] ) 都可以合併多個數組,但使用過程中有一點小區別。
array_merge在參考手冊中的說明如下:
array_merge()將兩個或多個陣列的單元合併起來,一個陣列中的值附加在前一個陣列的後面。傳回作為結果的數組。
如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆寫前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
兩個的差別是:
1.陣列鍵名為數字鍵名時,要合併的兩個陣列中有同名數字KEY的時候,使用array_merge()不會覆寫原來的值,而使用「+」合併陣列則會把最先出現的值作為最終結果傳回,而把後面的陣列擁有相同鍵名的那些值「拋棄」掉(注意:不是覆蓋而是保留最先出現的那個值)。範例:
$array1 = array(1=>'0');
$array2 = array(1=> "data");
$result1 = $array2 + $array1;/*結果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結果為$array2和$array1的值,鍵名重新指派*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結果為$array1和$array2的值,鍵名重新指派*/
print_r($result4);
輸出結果為:
Array ( [1] => data )
Array ( [1] => 0 )
Array (
[0] => data
[1] => 0
)
Array
(
[0] => 0
[1] => data
)
2.當相同陣列鍵名為字元時,「+」運算子與鍵名為數字時一樣,但array_merge()此時會覆寫前面相同鍵名的值。
例子:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "data");
$result1 = $array2 + $array1;/*結果為$array2的值*/
print_r($result);
$result = $array1 + $array2 ;/*結果為$array1的值*/
print_r($result);
$result3 = array_merge($array2,$array1);/*結果為$array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*結果為$array2*/
print_r($result4);
輸出結果為:
Array ( [asd] => data )
Array ( [asd] => 0 )
Array ( [asd] => 0 )
Array ( [asd] => data )