php 數組函數array_merge 合併數據的坑

array_merge

(PHP 4, PHP 5, PHP 7)

array_merge — 合併一個或多個數組

說明

array_merge ( array $array1 [, array $... ] ) : array

array_merge() 將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回作爲結果的數組。

如果輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。

如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。

結論:不可以使用array_merge合併數字索引類型的數組

想要合併數字索引類型(包括字符串的數字)的數組可以使用 + 合併

/**
 * 字符串數字類型的鍵名
 */
$a  = [
    '123'  => 1,
    '1233' => 1,
];
$a1 = [
    '123'  => 1,
    '1233' => 1,
];
print_r(array_merge($a, $a1));

/**
 * 字符串非數字類型的鍵名
 */
$d  = [
    'A1' => 1,
    'A2' => 1,
];
$d1 = [
    'A1' => 1,
    'A3' => 1,
];
print_r(array_merge($d, $d1));

/**
 * 數字類型的鍵名
 */
$b1 = [
    12 => 1,
    13 => 1,
];
$b2 = [
    12 => 1,
    14 => 1,
];
print_r(array_merge($b1, $b2));

$c1 = [
    12 => 1,
    13 => 1,
];
$c2 = [
    12 => 1,
    14 => 1,
];
print_r($c1 + $c2);

返回結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章