任何想法如何以优雅的方式缩短法规 我的if声明:
if(getfoo1() == getfoo2() && getfoo2() == 1)
{
}
修改:
我正在寻找类似的东西:
if(getfoo1() == getfoo2() ==1)
{
}
但我想我们不能这样做。
答案 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
{
}