2015-11-03 58 views
3

我有一個函數返回一個自定義星期,用於計算自定義星期。爲什麼我不能在PHP函數中將函數作爲默認變量提供?

我遇到的問題是實例化函數時的默認變量值。我正在使用不同的function返回默認值,並引發錯誤。

當我打電話的簡單功能的東西,如:

function myFunction ($myVar = "test") { ... } 

那就沒有問題。

當我拋出一個function到變量作爲默認情況下,我得到以下錯誤:

[Tue Nov 03 15:00:41 2015] [error] [client 10.64.241.13] PHP Parse error: syntax error, unexpected '(', expecting ')' in /var/www/service/test.php on line 6 

這裏是我的功能是萬一引發此錯誤你想要一個例子:

function get_mod_week_day($day = date('N'), $hour = date('H')) { 

$myDay = null; 

switch ($day) { 

    case 1: 
     $myDay = 5; 
     break; 
    case 2: 
     $myDay = 6; 
     break; 
    case 3: 
     $myDay = 7; 
     break; 
    case 4: 
     $myDay = 1; 
     break; 
    case 5: 
     $myDay = 2; 
     break; 
    case 6: 
     $myDay = 3; 
     break; 
    case 7: 
     $myDay = 4; 
     break; 
    default: 
     $myDay = false; 
} 

return $myDay; 

} 

是不可能調用function來返回一個默認變量,或者有什麼辦法可以解決這個問題嗎?

回答

6

從文檔Function Arguments

The default value must be a constant expression, not (for example) a variable, a class member or a function call.

一般類似這樣的東西會做:

function get_mod_week_day($day=null, $hour=null) { 
    $day = is_null($day) ? date('N') : $day; 
    $hour = is_null($hour) ? date('H') : $hour; 
} 

此外,您switch似乎冗長看到你是剛剛加入4$day減去3

+0

完美,謝謝!我會在幾分鐘內接受 –

2

默認值必須是常量表達式,而不是(例如)變量,類成員或函數調用。

相關問題