PHP中array_merge()函數與array+array、array_merge_recursive() 的區別
區別如下:
當下標為數值時,array_merge()不會覆蓋掉原來的值,但array+array合並數組則會把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋).
當下標為字符時,array+array仍然把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉,但array_merge()此時會覆蓋掉前面相同鍵名的值.
該函數與array_merge_recursive() 函數之間的不同是在處理兩個或更多個數組元素有相同的鍵名的情況。array_merge_recursive() 不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸組成一個數組。
例子1:
代碼:
$arr1 = [‘PHP‘, ‘apache‘];
$arr2 = [‘PHP‘, ‘MySQl‘, ‘HTML‘, ‘CSS‘];
$mergeArr = array_merge($arr1, $arr2);
$plusArr = $arr1 + $arr2;
var_dump($mergeArr);
var_dump($recurArr);
var_dump($plusArr);
結果
$mergeArr:
array (size=6)
0 => string ‘PHP‘ (length=3)
1 => string ‘apache‘ (length=5)
2 => string ‘PHP‘ (length=3)
3 => string ‘MySQl‘ (length=5)
4 => string ‘HTML‘ (length=4)
5 => string ‘CSS‘ (length=3)
$recurArr:
array (size=6)
0 => string ‘PHP‘ (length=3)
1 => string ‘apache‘ (length=5)
2 => string ‘PHP‘ (length=3)
3 => string ‘MySQl‘ (length=5)
4 => string ‘HTML‘ (length=4)
5 => string ‘CSS‘ (length=3)
$plusArr
array (size=4)
0 => string ‘PHP‘ (length=3)
1 => string ‘apache‘ (length=5)
2 => string ‘HTML‘ (length=4)
3 => string ‘CSS‘ (length=3
例子2:
代碼:
$arr1 = [‘PHP‘, ‘a‘=>‘MySQl‘];
$arr2 = [‘PHP‘, ‘MySQl‘, ‘a‘=>‘HTML‘, ‘CSS‘];
$mergeArr = array_merge($arr1, $arr2);
$plusArr = $arr1 + $arr2;
var_dump($mergeArr);
var_dump($recurArr);
var_dump($plusArr);
結果
$mergeArr:
array (size=5)
0 => string ‘PHP‘ (length=3)
‘a‘ => string ‘HTML‘ (length=4)
1 => string ‘PHP‘ (length=3)
2 => string ‘MySQl‘ (length=5)
3 => string ‘CSS‘ (length=3)
$recurArr
array (size=6)
0 => string ‘PHP‘ (length=3)
‘a‘ =>
array(size=2)
0 => string ‘MYSQl‘(length=5)
1 => string ‘HTML‘(length=5)
1 => string ‘PHP‘ (length=3)
2 => string ‘MySQl‘ (length=5)
3 => string ‘CSS‘ (length=3)
$plusArr
array (size=4)
0 => string ‘PHP‘ (length=3)
1 => string ‘a=>MySQl‘‘ (length=5)
2 => string ‘a=>HTML‘‘ (length=5)
3 => string ‘CSS‘ (length=3)
例子3:
代碼:
$arr1 = [‘PHP‘, ‘a‘=>‘MySQl‘,‘6‘=>‘CSS‘];
$arr2 = [‘PHP‘, ‘MySQl‘, ‘a‘=>‘HTML‘, ‘CSS‘];
$mergeArr = array_merge($arr1, $arr2);
$recurArr = array_merge_recursive($arr1,$arr2);
$plusArr = $arr1 + $arr2;
var_dump($mergeArr);
var_dump($recurArr);
var_dump($plusArr);
結果:
$mergeArr
array (size=6)
0 => string ‘PHP‘ (length=3)
‘a‘ => string ‘HTML‘ (length=4)
1 => string ‘CSS‘ (length=3)
2 => string ‘PHP‘ (length=3)
3 => string ‘MySQl‘ (length=5)
4 => string ‘CSS‘ (length=3)$recurArr
array (size=6)
0 => string ‘PHP‘ (length=3)
‘a‘ =>
array(size=2)
0 => string ‘MYSQl‘(length=5)
1 => string ‘HTML‘(length=5)
1 => string ‘CSS‘ (length=3)
2 => string ‘PHP‘ (length=3)
3 => string ‘MySQl‘ (length=5)
4 => string ‘CSS‘ (length=3)
$plusArr
array (size=5)
0 => string ‘PHP‘ (length=3)
‘a‘ => string ‘MySQl‘ (length=5)
6 => string ‘CSS‘ (length=3)
1 => string ‘MySQl‘ (length=5)
2 => string ‘CSS‘ (length=3)
相信通過上邊三個例子大家已經非常清楚array_merge()函數和array+array數組相加的區別了吧。
PHP中array_merge()函數與array+array、array_merge_recursive() 的區別