PHP合并數組一般有兩種做法,一種是直接使用加號相加,另一種則是使用array_merge函數進行相加,array_merge() 將兩個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。 如果輸入的數組中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
兩者之間有點區別:
數組鍵名為數字鍵名時,要合并的兩個數組中有同名數字KEY的時候,使用array_merge()不會覆蓋掉原來的值,而使用“+”合并數組則會把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉(注意:不是覆蓋而是保留最先出現的那個值)。當相同數組鍵名為字元時,“+”運算子與鍵名為數字時一樣,但array_merge()此時會覆蓋掉前面相同鍵名的值。
執行個體:
<?php$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 )
代碼:
<?php$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 )
1.相加會證數組中的自然index不被重設
2.相加方法中,被加的數組內的值不會被覆蓋
3.merge函數中的自然index會被重設
4.merge函數,無所謂被merge和merge關係,越後面的array參數,其值,會覆蓋較前面的array參數相同鍵的值