有没有办法陈述与另一个条件总体相关的多个条件?

时间:2019-02-06 00:09:51

标签: php if-statement boolean bitwise-operators

我正在尝试合并一些不同的if语句。我要完成的工作将显示如下内容:

如果(这是真的,这是真的)或(这是真的,这是真的)AND(这是真的)

因此,前两个括号中的至少一个必须为true,如果其中一个为true,则最后一个括号也将为true,以便内部代码被执行。

这是我正在尝试(但不成功)尝试工作的特定代码:

 if(($calc->number % 2 == 1 && $calc->doubleColor == 'b2' | $calc->number % 2 == 0 && $calc->doubleColor = 'r2') && in_array($calc->number, $backToBet)){

  }

有没有办法做到这一点?一个潜在可能?将很多内容放入单个if语句有什么缺点吗?

编辑

  $blackMatch = $calc->number % 2 == 1 && $calc->doubleColor == 'b2';
  $redMatch = $calc->number % 2 == 0 && $calc->doubleColor = 'r2';
  $numberMatch = in_array($calc->number, $backToBet);

 if(($blackMatch || $redMatch) && $numberMatch){
   }

/ ** Calc->number = 2,  $blackMatch = false, $redMatch = false, 
     $numberMatch array contains 2 **/

即使内部括号中的两个条件都不满足,基本上我得出的结果还是一个“ true”结果。

1 个答案:

答案 0 :(得分:1)

为了使代码更易于阅读,我建议使用单独的变量,如下所示:

$condition1 = ($calc->number % 2 == 1) && ($calc->doubleColor == 'b2');
$condition2 = ($calc->number % 2 == 0) && ($calc->doubleColor == 'r2');
$condition3 = in_array($calc->number, $backToBet);
if (($condition1 || $condition2) && $condition3) {
}

两点注意:

  1. ||是逻辑OR,|是按位OR
  2. ==是比较,=是赋值