php – 陣列合併,索引相同而不覆蓋的方法

設計 function 的時候,一定常常用到這種概念。例如外部參數不指定時,須要有個預設值,怎麼辦呢?

我們先看兩個陣列合併,但遇到第一個陣列有指定的時候,第二個陣列不覆蓋的方法

// 後面陣列替換前面陣列
$a = [];
$b = ['hello' => "Jocelyn"];
print_r($a + $b); // Array ( [hello] => Jocelyn )

// 遇到相同的鍵,後面不會替換前面
$a = ['hello' => "JSN"];
$b = ['hello' => "Jocelyn"];
print_r($a + $b); // Array ( [hello] => JSN )

 

所以我們設計 function 的時候,可以這樣使用

function myfun($param)
{
    $param +=
    [
        'hello' => "JSN",
    ];

    return $param;
}

 

不指定參數,採用預設值

$reuslt = myfun([]);
print_r($reuslt); // 輸出:Array ( [hello] => Jocelyn )

 

當使用者指定,不套用預設值

$reuslt = myfun([
    'hello' => "Jocelyn",
]);
print_r($reuslt); // 輸出:Array ( [hello] => Jocelyn )

 

所以重點就是 『+』 號在陣列上的應用囉!陣列合併可以另外參考:array_merge()、array_merge_recursive()

發表迴響