我有很多带参数的函数,可以是bool或null。如果我们简化我的功能,我会遇到这样的事情:
funtion ($param) {
if ($param) {
//true
} else {
//false
}
}
然而,当我打电话给function(null);
时,它显然会进入另一部分状态。所以我必须做
funtion ($param) {
if (isset($param)) {
if ($param) {
//true
} else {
//false
}
}
}
对于每个类似的if
条件,这有点烦人。
所以我的问题是:
是否有可能使用此类参数更快和/或没有其他功能来执行此类条件?
答案 0 :(得分:3)
要仅对true
和false
进行验证,请使用严格类型比较(===):
function check($param)
{
if ($param === true) {
// It's true. :)
} else if ($param === false) {
// It's false.. :o
}
}
如果是null
,则会忽略它。
答案 1 :(得分:1)
请阅读底部代码,了解最有用(但解释性最小)的功能。
以下功能解决了您的困境。如果$param
为true或false,则return
会返回$param
的布尔版本(对于此类实例非常有用,如$ param是sting或整数等)。
否则,被定义为NULL
值的函数不会返回任何内容。
类型清晰文本的示例:
<?php
//Enter your code here, enjoy!
$test[] = NULL;
$test[] = true;
$test[] = false;
$test[] = "string";
$test[] = 45;
function tester($param) {
if(!is_null($param)){
return (boolean)$param?"true":"false";
}
return "null";
}
foreach($test as $row){
print $row . " :: ". tester($row)."\n";
}
示例输出:
:: null
1 :: true
:: false
string :: true
45 :: 真
如果您想要返回实际类型而不是文本表示,可以使用精简版本轻松实现:
解决方案:
function ($param) {
if(!is_null($param)){
return (boolean)$param;
}
// not required but useful to keep for code clarity.
//return null;
}
可能的结果:
1(真)
0(假)
无效