优雅的方式缩短if语句

时间:2014-08-27 06:49:25

标签: php if-statement

任何想法如何以优雅的方式缩短法规 我的if声明:

 if(getfoo1() == getfoo2() &&  getfoo2() == 1)
 {

 }

修改
我正在寻找类似的东西:

if(getfoo1() == getfoo2() ==1)
{
}

但我想我们不能这样做。

5 个答案:

答案 0 :(得分:3)

$a = getfoo1();
$b = getfoo2(); // less operations, while it not produces duplicate calls

if($a == $b && $b == 1){
    // do something
}

答案 1 :(得分:2)

$variable = ((getfoo1() == getfoo2() && getfoo2() == 1) ? $value1 : $value2);

更优雅,结合:

$a = getfoo1();
$b = getfoo2();
$variable = (($a == $b && $b == 1) ? $value1 : $value2);

答案 2 :(得分:1)

由于我们不知道函数的可能返回值,如果你假设它们是整数,那么你可以说:

$a = getfoo1();
$b = getfoo2();
if (($a * $b) === 1) { // strict equality for the win
    echo 'hi';
}

如果$a$b 1都是$both = array(getfoo1(), getfoo2()); // use array_diff_assoc so it checks multiple occurrences of the same value $diffCount = count(array_diff_assoc($both, array(1, 1))); if ($diffCount === 0) { echo 'hi'; } ,结果才会成立。

另一种方式:

{{1}}

答案 3 :(得分:0)

试试这个。

$a = getfoo1();
$b = getfoo2();
if( intval($a && $b) === 1) {
    echo 'hi';
}

答案 4 :(得分:0)

因为无论如何getfoo2() == 1必须是真的,更好的方法是首先检查getfoo2()是否等于1.如果它是假的,无论第二个条件。但是,如果您先检查getfoo1() == getfoo2()然后检查getfoo2() == 1,则必须始终检查2个条件。

因此请选择

$a = getfoo1();
$b = getfoo2();
if($b == 1 && $a == $b) 
{
     // logiv
}
else
{
}