PHP 是否有“命名参数”?这样可以省略前面的论点而可以写后面的论点吗?
在 PHP 中,只要参数具有如下所示的默认值,您就可以调用不传入参数的函数:
function test($t1 ='test1',$t2 ='test2',$t3 ='test3')
{
echo "$t1, $t2, $t3";
}
test();
但是,我们只是希望最后一个参数不同,但前两个参数应使用其默认值。我能想到的唯一方法是这样做但没有成功:
test('test1','test2','hi i am different');
我尝试过:
test(,,'hi i am different');
test(default,default,'hi i am different');
是否有干净、有效的方法来做到这一点?
In PHP you can call a function with no arguments passed in so long as the arguments have default values like this:
function test($t1 ='test1',$t2 ='test2',$t3 ='test3')
{
echo "$t1, $t2, $t3";
}
test();
However, let's just say I want the last one to be different but the first two parameters should use their default values. The only way I can think of is by doing this with no success:
test('test1','test2','hi i am different');
I tried this:
test(,,'hi i am different');
test(default,default,'hi i am different');
Is there clean, valid way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用数组:
这样调用你的函数:
Use arrays :
Call your function this way :
使用原始 PHP 无法做到这一点。您可以尝试以下操作:
然后调用您的函数,并使用
null
作为默认变量的标识符。您还可以使用具有默认值的数组,使用更大的参数列表会更容易。更好的是尽量避免这一切,并重新考虑一下你的设计。
You can't do that using raw PHP. You can try something like:
and then call your function, with
null
as the identifier of the default variable. You can also use an array with the default values, that will be easier with a bigger parameter list.Even better is to try to avoid this all, and rethink your design a bit.
在 PHP 中,具有默认值的参数必须位于最后,在其他参数之后,并且在调用函数时必须填写到此为止的所有其他参数。我不知道如何传递触发默认值的值。
The parameters with default values have to be last, after the others, in PHP and all the others up to that point must be filled in when calling the function. I don't know of anyway to pass a value that triggers the default value.
在这些情况下,我通常所做的是将参数指定为数组。看看下面的例子(未经测试):
What I normally do in those situations is to specify the parameters as an array instead. Have a look at the following example (untested):
您可以像这样定义函数:
并在没有持久参数的情况下调用它或
将一个或多个替换为“false”:
you could define the function like:
and call to it without the lasting params or
replacing one or several with "false":