PHP function 參數 default value

php-logo

2011.08.06 Update: 感謝 jaceju 指正筆誤 自己定義 PHP Function 的時候,假設該函式有1個參數,您可以傳入該參數或者是不傳,但是函式裡面如何判斷是否有傳入該參數呢?先看看底下例子:

function test($arg_1 = NULL)
{
    // 判斷 $arg_1 參數是否傳入
    $arg_1 = $arg_1 || 'test';
    echo $arg_1; 
}
你會發現上面結果會是

1,而不是 test,大家會懷疑為什麼這樣寫不行呢,那是因為 || 是 boolean operators,他只會 return true 或是 false,而不是回傳 string,如果想這這樣寫,大概可以用 javascript 或 perl 語言來寫,javascript 可以參考之前的文章 [Javascript] 在函數裡設定參數預設值,然而 PHP 的正確寫法要用 ?: 來取代

function test($arg_1 = NULL)
{
    // 判斷 $arg_1 參數是否傳入
    $arg_1 = (isset($arg_1)) ? $arg_1 : 'test';
    // 或者是
    $arg_1 = $arg_1 ? $arg_1 : 'test';
    echo $arg_1; 
}
請參考

Logical Operators


See also