我经常发现自己检查了多个函数以确定变量的正确值,但我不认为我这样做是最有效的。
目前,
$var = false;
if($var = first_function_to_check()){
do_this_thing($var);
} elseif($var = fallback_function_to_check()){
do_this_thing($var);
}
如果first_function_to_check
返回一个值,我就全部设置了,但如果它返回false,我想检查fallback_functon_to_check
。如果返回false,则变量仍设置为false。
我经常使用与此相近的东西,但我知道必须有一个更好的速记方法,以便我没有多行参考do_this_thing()
出于同样的目的
答案 0 :(得分:1)
以下内容如何:
$var = false;
if(first_function_to_check($var) || fallback_function_to_check($var)){
do_this_thing($var);
}
function first_function_to_check(&$var)
{
// some condition that means you return true
if(some_condition){
$var = 'abc'
}
return $var; // either true or false
}
function fallback_function_to_check(&$var)
{
// some other condition that means you return true
if(some_other_condition){
$var = 'xyz'
}
return $var; // either true or false
}
这里有两点需要注意:
1)功能签名定义为(&$var)
,带有&
符号。这意味着该值作为引用传递,这意味着函数对$var
所做的任何更改都将反映在函数之外。因此,之前您将值返回到$var
,在将变量传递给函数时不再需要,因此可以在内部重新赋值。 这意味着,当您将$var
传递给do_this_thing()
时,它的值就是您的功能变为的值。
2)如果fallback_function_to_check($var)
返回false,代码将只会进入first_function_to_check($var)
。因此,从第1点开始,如果$var
返回false,则fallback_function_to_check($var)
只会受first_function_to_check($var)
的影响。
当然,如果两者都返回false,则永远不会调用do_this_thing($var)
,$var
仍为假。