Логические операторы в PHP позволяют создавать более компактные определения в условных выражениях. Допустим, нам требуется определить, что переменная х входит в диапазон от 0 до 5. Не имея возможности использовать логические операторы, нам бы пришлось создать двойную проверку: сначала проверить, что х > 0, а потом проверить, что х < 5. Получилось бы что-то вроде такой конструкции:
<?php
$x = 2;
if($x >0 ){
if($x < 5){
//x соответствует нашему диапазону
}
}
?>
Согласитесь, выражение достаточно громоздкое. Используя логические операторы PHP, мы можем создать более компактное и изящное выражение для проверки:
<?php
$x = 2;
if($x >0 && $x < 5){
//x соответствует нашему диапазону
}
?>
По сути, существует 4 основных оператора, которые могут иметь один или два способа написания:
1. AND – логический оператор «и». Возвращает true, если обе части выражения соответствуют истине. Рассмотрим пример:
$x=5
$y=2
$x < 9 and $y > 0 // получим true, т.к. обе части верны
Оператор AND имеет альтернативную форму записи: &&. То есть мы можем писать так: $x < 9 && $y > 0
2. OR – логический оператор «или». Возвращает true, если хотя бы одна часть выражения соответствуют истине. Рассмотрим пример:
$x=5
$x < 4 or $x > 0 // получим true, т.к. одна из частей верна $x > 0
Оператор OR имеет альтернативную форму записи: || (две вертикальные черты). То есть мы можем писать так:
$x < 4 || $x > 0
3. XOR – логический оператор, возвращающий true, если одно из выражений истинно, но не оба одновременно. Пример:
$x=5
$y=2
($x==5 xor $y==2) //вернет false, т.к. истинны оба выражения.
А выражение ($x==2 xor $y==2) //вернет true, т.к. истинно лишь одна из частей выражения, но не оба одновременно.
4. Not – оператор отрицания. Обычно пишется, как «!». Пример:
$x=4
$y=6
!($x == $y) //вернет true
Данное выражение можно написать короче: $x != $y
Стоит отметить, что операторы «||» и «&&» имеют больший приоритет по сравнению с операторами AND и OR. Это означает, что в сложных выражениях, объединяющих несколько логических операторов, операторы «||» и «&&» будут выполняться в первую очередь.