PHP合併陣列 與array merge的區別分析

2021-07-13 12:26:26 字數 2552 閱讀 5503

php中兩個陣列合併可以使用+或者array_merge,但之間還是有區別的,而且這些區別如果了解不清楚專案中會要命的!

主要區別是兩個或者多個陣列中如果出現相同鍵名,鍵名分為字串或者數字,需要注意 

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)

但是本人認為以上區別總結的並不全面,

1.當陣列為數字鍵名或可以轉換為數字下標的字串鍵名時,array_merge()會重新初始化鍵名,而「+」操作則不會。在程式設計過程中有許多操作是需要保留鍵名和值的對應關係,這個時候就需要用「+」,示例**如下:

$a = array(1 => 'a', 5 => 'b');

$b = array(3 => 'c', 7 => 'd');

$c = $a + $b;

var_dump($c);

var_dump(array_merge($a, $b));

結果如下:

array (size=4)

1 => string 'a' (length=1)

5 => string 'b' (length=1)

3 => string 'c' (length=1)

7 => string 'd' (length=1)

array (size=4)

0 => string 'a' (length=1)

1 => string 'b' (length=1)

2 => string 'c' (length=1)

3 => string 'd' (length=1)

PHP 合併陣列

php陣列合併 二元運算子 array merge array replace arr1 a first b second third arr2 a test1 c test2 test3 二元運算子 相同鍵 包括數字鍵與字串鍵 前面覆蓋後面的,不同鍵合併 new arr arr1 arr2 pri...

php陣列合併 array merge與 「 」

php中陣列合併有兩種方式 array merge 與 使用方式如下 arr array merge arr1 arr2 arr arr1 arr2 兩種方式看似相同,但使用中 坑 還是不少的。看下面的例子 arr1 array 3,3476,123,45,45,a 79 arr2 array 40...

PHP陣列 陣列合併

陣列合併函式 array merge或者 array merge 將乙個或多個陣列的單元合併起來,乙個陣列中的值附加在前乙個陣列的後面。返回作為結果的陣列。如果輸入的陣列中有相同的字串鍵名,則該鍵名後面的值將覆蓋前乙個值。然而,如果陣列包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。如果只...