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()