编写多个条件来执行相同的操作,例如
,对我来说似乎效率低下if ( (condition_one || (condition_two && condition_three) )
{
// Do this ...
}
elseif ( condition_two && condition_three)
{
// Do same as before ...
}
else
{
// Do that ...
}
有没有一种有效的方法来实现这一目标?其中condition_two和condition_three必须一起执行,但与condition_one ...
分开执行if ( (condition_one || (condition_two && condition_three) )
{
// Do this ...
}
else
{
// Do that ...
}
换句话说,有一些方法,我不知道,这样做:
if ( ( $a < $b || ( $a <= $b && $c = $d ) )
{
echo 'foo';
}
else
{
echo 'bar';
}
而不是:
if ( ( $a < $b )
{
echo 'foo';
}
elseif ( $a <= $b && $c = $d )
{
echo 'foo';
}
else
{
echo 'bar';
}
答案 0 :(得分:1)
你可以轻松地测试这个,但你有额外的帮助
<?php
function testNest($a, $b, $c, $d){
if ($a < $b || ( $a <= $b && $c = $d )) {
echo 'foo';
} else {
echo 'bar';
}
}
testNest(3, 2, 3, 2); //bar
testNest(1, 2, 3, 2); //foo
function testElif($a, $b, $c, $d){
if ($a < $b ){
echo 'foo';
} elseif ( $a <= $b && $c = $d ) {
echo 'foo';
} else {
echo 'bar';
}
}
testElif(3, 2, 3, 2); //bar
testElif(1, 2, 3, 2); //foo
我会让你想出更多的例子,但确实没有必要使用elseif
答案 1 :(得分:0)
你有一个额外的(在你上面的代码中,但你可以用另一种方式做到这一点,我们称之为切换回退:就像这样:
switch(true){
case $a < $b: //fallback
case ( $a <= $b && $c = $d ):
//do something
break;
default:
//default action
break;
}
请注意,我跳过了一个“休息”&#39;对于后备,如果任何2&#39;案例中的任何一个将会运行。是(真)。