Есть ли способ указать несколько условий, связанных с другим состоянием в целом? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь объединить несколько различных операторов if.То, что я пытаюсь выполнить, будет читать что-то вроде этого:

Если (это правда, и это правда) ИЛИ (это правда, и это правда) И (это правда)

Таким образом, по крайней мере один из первых двух наборов скобок должен быть истинным, и если один из них является истинным, то и последний набор круглых скобок должен быть истинным, чтобы выполнялся код внутри.

Вот конкретный код, который я (безуспешно) пытаюсь заставить работать:

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

  }

Есть ли способ сделать это?Возможность?Есть ли какой-то недостаток в получении большого количества в одном операторе if?

EDIT

  $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 **/

По сути, я заканчиваю «истинным» результатом, хотяни одно из условий во внутренних скобках не выполняется.

1 Ответ

0 голосов
/ 06 февраля 2019

, чтобы сделать код проще для чтения, я бы предложил использовать отдельные переменные, например:

$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. || логичноИЛИ | - побитовое ИЛИ
  2. == - сравнение, = - присвоение
...