PHP 7 if...else...elseif Statements



我有一个具有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>';
}
?>

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

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(,则无需进行此转换。

最新更新