PHP 7 if ... else ... elseif语句

时间:2018-07-17 04:15:14

标签: php

我有3个条件的函数调用。

我们叫他们:

condA();
condB();
condC();

我想一次只允许一个条件(A / B / C)。不允许同时使用两个/三个条件(A&B,A&C,B&C,A&B&C)。 如果均未选择,则应输出一条消息。 我如何添加限制以允许一个条件或一个条件都不允许。

这是我尝试输入的代码:      

condA();
condB();
condC();

if(condA() == true)
{ echo '<div>DIV A</div>'; }

if(condB()== true)
{ echo '<div>DIV B</div>'; }

if(condC() == true)
{ echo '<div>DIV C</div>'; }

else
{
    if(condA() == true || condB() == false || condC() == false)
    {  echo '<div>DIV D</div>'; }
    if(condA() == false || condB() == true || condC() == false)
    {  echo '<div>DIV D</div>'; }
    if(condA() == false || condB() == false || condC() == true)
    {  echo '<div>DIV D</div>'; }
    else
    echo '<div>DIV E</div>';
 }

?>

1 个答案:

答案 0 :(得分:1)

使用布尔逻辑会使事情变得不必要地复杂,您可以改用算术:

if (((bool)condA() + (bool)condB() + (bool)condC()) > 1)
     echo '<div>DIV D</div>';

这将确保仅在满足一个条件且不超过一个条件的情况下脚本才能继续执行。如果满足条件,则继续进行单个检查:

else
{
    if (condA())
        echo '<div>DIV A</div>';

    else if (condB())
        echo '<div>DIV B</div>';

    else if (condC())
        echo '<div>DIV C</div>';

    else
        echo '<div>DIV E</div>';
}

将cond函数的输出转换为bool可确保逻辑正常工作。如果您保证这些函数的输出已经是布尔性质(false0true1),则无需进行此转换。