The main difference is that if the same key name appears in two or more arrays, the key name is divided into a string or a number. Please note that
1) When the key name is a number, array_merge() will not overwrite it. Remove the original value, but + merge the array will return the first value as the final result, and "discard" those values with the same key name in the subsequent arrays (not overwrite)
2) When the key name is a character, + still returns the first value as the final result, and "discards" those values in the subsequent arrays with the same key name, but array_merge() will overwrite the previous values with the same key name. Value
It should be noted that the array key form 'number' is equivalent to a number
$a = array('a','b'); $b = array('c', 'd'); $c = $a + $b; var_dump($a); var_dump(array_merge($a, $b)); $a = array(0 => 'a', 1 => 'b'); $b = array(0 => 'c', 1 => 'b'); $c = $a + $b; var_dump($c); var_dump(array_merge($a, $b)); $a = array('a', 'b'); $b = array('0' => 'c', 1 => 'b'); $c = $a + $b; var_dump($c); var_dump(array_merge($a, $b)); $a = array(0 => 'a', 1 => 'b'); $b = array('0' => 'c', '1' => 'b'); $c = $a + $b; var_dump($c); var_dump(array_merge($a, $b));
Result
array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) 3 => string 'd' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) 3 => string 'b' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) 3 => string 'b' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) array 0 => string 'a' (length=1) 1 => string 'b' (length=1) 2 => string 'c' (length=1) 3 => string 'b' (length=1)
More analysis of the difference between PHP merge array+ and array_merge For related articles, please pay attention to the PHP Chinese website!