What's the difference between array_merge and array + array?

后端 未结 9 1653
遥遥无期
遥遥无期 2020-11-29 21:26

A fairly simple question. What\'s the difference between:

$merged = array_merge($array1, $array2);

and

$merged = $array1 +          


        
9条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-29 22:08

    Here's a simple illustrative test:

    $ar1 = [
       0  => '1-0',
      'a' => '1-a',
      'b' => '1-b'
    ];
    
    
    $ar2 = [
       0  => '2-0',
       1  => '2-1',
      'b' => '2-b',
      'c' => '2-c'
    ];
    
    print_r($ar1+$ar2);
    
    print_r(array_merge($ar1,$ar2));
    

    with the result:

    Array
    (
      [0] => 1-0
      [a] => 1-a
      [b] => 1-b
      [1] => 2-1
      [c] => 2-c
    )
    Array
    (
      [0] => 1-0
      [a] => 1-a
      [b] => 2-b
      [1] => 2-0
      [2] => 2-1
      [c] => 2-c
    )
    

    Notice that duplicate non-numeric keys will take the first value using the union operator but the later one using the array_merge.

    For numeric keys, the first value will be used with the union operator whereas the all the values will be used with the array_merge, just reindexed.

    I generally use union operator for associative arrays and array_merge for numeric. Of course, you can just as well use the array_merge for associative, just that the later values overwrite earlier ones.

提交回复
热议问题