function dosomething($var1, $var2, $var3='somevalue'){
..
}
怎么样
function dosomething($var3='somevalue',$var1, $var2 )
{
}
我们以后可以调用doSomething(,1,2(;吗?
不过,这似乎会产生编译错误。
来自PHP文档:
请注意,使用默认参数时,任何默认值都应位于任何非默认参数的右侧;否则,事情将无法按预期工作。
如果你想有灵活的参数数量,你可以弄乱func_num_args()
、func_get_arg()
和func_get_args()
函数。
如果你想尝试,你总是可以做:
dosomething(['', $var1, $var2]);
在定义中:
function dosomething (array $Param) {
// Put them into individual variables (only if you want)
$Opt = $Param[0];
$val1 = $Param[1];
$val2 = $Param[2];
}
有了这个,您甚至可以做到:
dosomething([1 => $var1, 0 => '', $var2]);
它将同样工作
笔记:
- 作为实验是一件有趣的事情。我不会将上面的代码用于任何严肃的事情
-
['a', 'b']
仅适用于自 PHP> 5.4 以来的数组。对于 PHP <= 5.3 少,请改用array()
。
根据您的主题问题。是的,可选参数可以放在任何地方。但是它没用(当可选参数先行时(,除非在大小写上。使用类型提示和 null 作为默认值时。
毫无意义的例子(目前(
function dosomething($var3='somevalue',$var1, $var2 )
{
}
不能使用第一个参数的默认值。默认参数值
允许的示例
function dosomething(stdClass $var3=null,$var1, $var2 )
{
}
您可以在第一个参数中传递 null。类型提示
附言但是建议跳过可选参数。如果它被接受并发布,您可以在方法中的每个位置定义可选。