我有一个函数返回一个自定义的星期几,用于计算自定义周期.
我遇到问题的是实例化函数时的默认变量值.我使用不同的方法 function来返回默认值,这会引发错误.
当我用类似的东西调用一个简单的函数时:
function myFunction ($myVar = "test") { ... }
Run Code Online (Sandbox Code Playgroud)
那就没问题了.
一旦我将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
Run Code Online (Sandbox Code Playgroud)
这是我的函数,如果你想要一个例子,抛出这个错误:
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;
}
Run Code Online (Sandbox Code Playgroud)
是否无法调用a function来返回默认变量或者是否有某种方法来解决这个问题?
从文档功能参数:
默认值必须是常量表达式,而不是(例如)变量,类成员或函数调用.
通常会做类似于此的事情:
function get_mod_week_day($day=null, $hour=null) {
$day = is_null($day) ? date('N') : $day;
$hour = is_null($hour) ? date('H') : $hour;
}
Run Code Online (Sandbox Code Playgroud)
此外,您switch似乎冗长看到你是刚刚加入4或减去3从$day.