[筆記] PHP array_merge與 陣列相加 '+' 比較

馬來西亞 吉隆波

使用array_mergearray+array兩個執行結果不同, 如果依照效能的話, 後者的陣列相加會比前者更好
這兩種方式都是用key與值去做比較, PHP陣列當中, 可以選擇指定key和值, 當然也可以不指定key只有值, 此時預設的key就是0,1,2,3,4....
array_merge($a, $b)的行為是, 當$a與$b有相同的key時, 值會後蓋前, 就是說$b的值會覆蓋$a的值, 如果沒有key的值, 則會附加在陣列尾端, 且index會重新排序
function myTest()
{
    $a = [
        'amy' => 'A001',
        'nini' => 'A002',
        1 => 'A003'
    ];
    $b = [
        'nini' => 'A004',
        'A005',
        'A006',
        'A007'
    ];
    print_r(array_merge($a,b));
}
執行結果
array(
    [amy] => A001
    [nini] => A004
    [0] => A003
    [1] => A005
    [2] => A006
    [3] => A007
)
如果是array+array的情況, 行為則是相反, 會前蓋後, 沒有key的值也會前蓋後, 且index不會重新排序
依照剛剛的例子:
function myTest_01()
{
    $a = [
        'amy' => 'A001',
        'nini' => 'A002',
        1 => 'A003'
    ];
    $b = [
        'nini' => 'A004',
        'A005',
        'A006',
        'A007'
    ];
    print_r(array_merge($a,b));
}
執行結果
array(
    [amy] => A001
    [nini] => A002
    [1] => A003
    [0] => A005
    [2] => A007
)