PHP合並數組array_merge函數運算符加號與的區別

“+”運算符和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 )

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *