如何在 PHP 中在第一个可选参数之后设置可选参数
我对 php 相当陌生,我想弄清楚如何在第一个可选参数之后设置可选参数?
例如,我有以下代码:
function testParam($fruit, $veg='pota',$test='default test'){
echo '<br>$fruit = '.$fruit;
echo '<br>$veg = '.$veg;
echo '<br>Test = '.$test;
}
如果我进行以下调用:
echo 'with all parama';
testParam('apple','carrot','some string');
//we get:
//with all parama
//$fruit = apple
//$veg = carrot
//Test = some string
echo '<hr> missing veg';
testParam('apple','','something');
//we get:
//missing veg
//$fruit = apple
//$veg =
//Test = something
echo '<hr> This wont work';
testParam('apple',,'i am set');
我想尝试进行调用,以便在最后一个示例中我将“pota”显示为默认的 $veg 参数,但传递到 $test “i am set”。
我想我可以将 0 传递到 $veg 中,然后在代码中分支它,如果 $veg =0 则使用 'pota' 但只是想知道是否还有其他语法,因为我在 php.net 中找不到任何关于它的内容。
I'm fairly new to php and I am trying to figure how do I set an optional parameter after the first optional parameter?
For example I have the following code:
function testParam($fruit, $veg='pota',$test='default test'){
echo '<br>$fruit = '.$fruit;
echo '<br>$veg = '.$veg;
echo '<br>Test = '.$test;
}
If i make the following calls:
echo 'with all parama';
testParam('apple','carrot','some string');
//we get:
//with all parama
//$fruit = apple
//$veg = carrot
//Test = some string
echo '<hr> missing veg';
testParam('apple','','something');
//we get:
//missing veg
//$fruit = apple
//$veg =
//Test = something
echo '<hr> This wont work';
testParam('apple',,'i am set');
I want to try make a call so that in the last example I show 'pota' as the default $veg parameter but pass into $test 'i am set'.
I guess I can pass 0 into $veg then branch it in the code to say if $veg =0 then use 'pota' but just wondered if there's some other syntax as i cant find anything in php.net about it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
仅使用默认参数无法完成您想要的操作。 默认值仅适用于缺少的参数,并且只能缺少最后一个参数。
您可以添加诸如
和 call the function as 之
类的行,也可以使用更通用的技术,以参数名称作为键在数组中传递参数。 像这样的东西
有点冗长,但也更灵活。 您可以添加参数和默认值,而无需更改现有的调用者。
You can't do what you want with just default parameters. The defaults only apply to missing arguments, and only the last argument(s) can be missing.
You can either add lines like
and call the function as
or use the more general technique of passing the parameters in an array with the parameter names as keys. Something like
This is a little more verbose but it is also more flexible. You can add parameters and defaults without changing the existing callers.
不幸的是,您无法在 PHP 中做到这一点。
您必须传入 0 或
null
或其他值,然后如果该值为 0 或null
,请将其更改为默认值。这里< /a> 是另一个应该为您提供更多信息的问题。
Unfortunately, you cannot do that in PHP.
You have to pass in 0, or
null
, or some other value and then if the value is 0 ornull
, change it to the default value.Here is another question that should give you more information.
这是我使用的技术:
现在要使用任何可选参数的默认值,只需像这样传递 NULL 即可。
在此示例中,
$veg
将等于'pota'
此代码示例的缺点是您必须对默认值进行两次编码。 您可以轻松地在参数声明中将默认值设置为 null,这样您就不必对默认值进行两次编码,但是,我喜欢设置两次,因为我的 IDE 为我提供了参数提示,可以立即向我显示默认值在函数签名中。
This is the technique I use:
Now to use the default value of any optional parameter, just pass NULL like so.
In this example,
$veg
will equal'pota'
The downside of this code example is that you have to code the default values twice. You could just as easily set the default value to null in the parameter declaration so you don't have to code the default value twice, but, I like to set it twice because my IDE gives me parameter hinting that instantly shows me the default values in the function signature.