Сложные условия в if-else в PHP

Иногда может быть нужно составить какое-то сложное условие. Для этого существуют операторы and (логическое И) и or (логическое ИЛИ).

Логическое И

Логическое И позволяет задать одновременность условий. В следующем примере условие выполнится, если переменная $num больше нуля и одновременно меньше 10:

<?php $num = 3; if ($num > 0 and $num < 10) { echo '+'; } else { echo '-'; } ?>

Условия могут налагаться не на одну переменную, а на разные. В следующем примере условие выполнится, если переменная $num1 равна 2 и одновременно переменная $num2 равна 3:

<?php $num1 = 2; $num2 = 3; if ($num1 == 2 and $num2 == 3) { echo '+'; } else { echo '-'; } ?>

Проверьте то, что переменная $num больше нуля и меньше 5.

Проверьте то, что переменная $num больше или равна 10 и меньше или равна 20.

Проверьте то, что переменная $num1 равна или меньше 1, а переменная $num2 больше или равна 3.

Логическое ИЛИ

Логическое ИЛИ требует выполнения хотя бы одного условия. В следующем примере условие выполнится, если переменная $num1 больше 0 или переменная $num2 больше 0 (достаточно выполнения хотя бы одного из условий):

<?php $num1 = 10; $num2 = -5; if ($num1 > 0 or $num2 > 0) { echo '+'; // сработает это } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num1 = -10; $num2 = -10; if ($num1 >= 0 or $num2 >= 0) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num1 = 0; $num2 = 0; if ($num1 >= 0 or $num2 >= 0) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num1 = 0; $num2 = 5; if ($num1 >= 0 or $num2 >= 0) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num1 = 5; $num2 = 5; if ($num1 >= 0 or $num2 >= 0) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num1 = -5; $num2 = 15; if ($num1 >= 0 or $num2 >= 0) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num = 1; if ($num == 0 or $num == 1) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num = 2; if ($num == 0 or $num == 1) { echo '+'; } else { echo '-'; } ?>

Не запуская код определите, что выведется на экран:

<?php $num = 2; if ($num == 0 or $num == 1 or $num == 2) { echo '+'; } else { echo '-'; } ?>

Приоритет операций сравнения

Операция and имеет приоритет над or. В следующем примере условие сработает, если переменная $num от 0 до 5 ИЛИ от 10 до 20:

<?php $num = 3; if ($num > 0 and $num < 5 or $num > 10 and $num < 20) { echo '+'; } else { echo '-'; } ?>

Группировка условий

Хотя операция and и имеет приоритет над or, часто удобнее использовать группирующие круглые скобки, чтобы явно показать приоритет операций:

<?php $num = 3; if ( ($num > 0 and $num < 5) or ($num > 10 and $num < 20) ) { echo '+'; } else { echo '-'; } ?>

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

В приведенном ниже коде укажите приоритет операций в явном виде:

<?php $num = 3; if ($num > 5 and $num < 10 or $num == 20) { echo '+'; } else { echo '-'; } ?>

В приведенном ниже коде укажите приоритет операций в явном виде:

<?php $num = 3; if ($num > 5 or $num > 0 and $num < 3) { echo '+'; } else { echo '-'; } ?>

В приведенном ниже коде укажите приоритет операций в явном виде:

<?php $num = 3; if ($num == 9 or $num > 10 and $num < 20 or $num > 20 and $num < 30) { echo '+'; } else { echo '-'; } ?>