替代长if语句

时间:2014-04-07 11:34:16

标签: php if-statement

如果我的if语句的条件构造如下:

if((condition 1) && (condition 2) && (condition 3))

我想添加一个else-if子句,其中条件相同,但其中一个(让我们说最后一个)现在是假的而不是真的,有没有办法表达这个而没有诉诸于此:

if((condition 1) && (condition 2) && (condition 3))
{
  //Some code
}
else if((condition 1) && (condition 2) && !(condition 3))
{
  //Some code
}

我能想到这样做的唯一方法是在两种情况下使用变量存储我想要成为的条件的结果:

$x = (condition 1) && (condition 2) ? true : false;

但是有更好的选择吗?

2 个答案:

答案 0 :(得分:1)

您可以嵌套条件:

if ( (condition 1) && (condition 2) ) {
    if (condition 3) {
      //Some code
    } else {
      //Some other code
    }
}

答案 1 :(得分:0)

你可以选择

if((condition 1) && (condition 2))
  {
  if (condition 3)
    {
    //Some code
    }
  else
    {
    //Some code
    }
  }

但是,我必须质疑这里的逻辑。条件1和2是否需要发生?然后你可以通过以下方式大大简化它:

if (!(condition 1))
  throw new Exception("Condition 1 didn't happen");

if (!(condition 2))
  throw new Exception("Condition 2 didn't happen");

if (condition 3)
  {
  //Some code
  }
else
  {
  //Some code
  }

您应该根据您的情况选择例外类型,或者甚至根本不选择抛出异常。但是,通过这种方式,您的代码得到了极大的简化。这应该是你的主要目标:对抗复杂性。当您开始进入几个嵌套条件时,您开始使代码无法维护。