PHP IF语句 - 关闭多个条件

时间:2017-04-05 18:50:28

标签: php if-statement conditional-statements

编写多个条件来执行相同的操作,例如

,对我来说似乎效率低下
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';
}

2 个答案:

答案 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;案例中的任何一个将会运行。是(真)。