主要差異是兩個或多個數組中如果出現相同鍵名,鍵名分為字串或數字,需要注意
1)鍵名為數字時,array_merge()不會覆寫原來的值,但+合併數組則會把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)
2)鍵名為字符時,+仍然把最先出現的值作為最終結果返回,而把後面的數組擁有相同鍵名的那些值“拋棄”掉,但array_merge()此時會覆蓋掉前面相同鍵名的值
需要注意的是數組鍵形式'數字' 等價於數字
$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));
結果
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)
更多PHP合併數組+與array_merge的區別分析相關文章請關注PHP中文網!