使用回退有条件地分配变量的最简单方法

时间:2014-07-11 14:01:36

标签: php conditional conditional-statements

我经常发现自己检查了多个函数以确定变量的正确值,但我不认为我这样做是最有效的。

目前,

$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()出于同样的目的

1 个答案:

答案 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仍为假。