Знак или в php

PHP поддерживает стандартные логические операторы AND и && , OR и || , ! (не) и XOR . Логические операторы позволяют сравнивать результаты работы двух операндов (значения или выражения) с целью определения факта возвращения одним из них или обоими значения true или false и выбора соответствующего продолжения выполнения сценария в зависимости от возвращенного значения. Как и операторы сравнения, логические операторы возвращают одно логическое значение — true либо false , в зависимости от значений находящихся по обе стороны от оператора.

Логические операторы

Пример Название Результат
$i and $y Логическое И TRUE, если оба операнда имеют значение TRUE.
$i or $y Логическое ИЛИ TRUE, если хотя бы один операнд имеет значение TRUE.
$i xor $y Исключающее или TRUE, если только один из операндов имеет значение TRUE, но не оба.
!$i Логическое НЕ (Отрицание) TRUE, если операнд имеет значение FALSE, и FALSE, если операнд имеет значение TRUE.
$i && $y Логическое И TRUE если и $i, и $y TRUE.
$i || $y Логическое ИЛИ TRUE если или $i, или $y TRUE.

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как OR или || . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает true . Если оба операнда имеют ложные значения, он возвращает false . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор || . И так, если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернет false .

Оператор OR работает также как и оператор || за одним исключением, если оператор OR используется с присваиванием, то сначала он вычислит и вернет значение левого операнда, в остальном он работает точно также как и оператор || , т.е. если один или оба его операнда имеют истинное значение, он возвращает true . Если оба операнда возвращают ложные значения, он вернёт false .

Читайте также:  Где делают телевизоры филипс

Чтобы стало понятнее, как они работают, приведем следующий пример:

Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов OR и || . Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает true , то правый операнд вычисляться не будет. Это позволяет экономить время исполнения, но нужно внимательно следить за тем, чтобы код, от которого может зависеть корректная работа программы, не был помещен в правый операнд.

Логическое И (AND и &&)

Оператор логическое И обозначается как AND или && . Он выполняет операцию «логическое И» над двумя операндами. Он возвращает true тогда и только тогда, когда оба операнда имеют значение true . Если один или оба операнда возвращают значение false , оператор возвращает false . Смысл двух разных вариантов записи оператора «логическое И» такой же как и у двух предыдущих операторов, а именно в том, что они работают с различными приоритетами.

Сначала разберем как работает оператор && . И так, если оба его операнда имеют истинное значение, он возвращает true . Если хотя бы один или оба его операнда возвращают значение false , он тоже вернет false .

Оператор AND работает также как и оператор && за одним исключением, если оператор AND используется с присваиванием, то сначала он вычислит и вернёт значение левого операнда, в остальном он работает точно также как и оператор && . Если хотя бы один из его операндов возвращает значение false , он тоже вернет false , также если оба операнда возвращают ложные значения, он возвращает false .

Для понимания рассмотрим теперь, как это работает на практике:

Читайте также:  Apple tv тормозит видео

Исключающее ИЛИ (XOR)

Оператор исключающее ИЛИ обозначается как XOR . Он возвращает значение true , если один и только один из операндов имеет значение true . Если оба операнда имеют значение true , оператор вернет значение false .

Так как приоритет оператора XOR такой же как и у операторов AND и OR (ниже чем у оператора присваивания), и он используется в выражении с присваиванием, то сначала он вычисляет и возвращает значение левого операнда.

Логическое НЕ (!)

Оператор логическое НЕ , его также называют отрицание обозначается знаком ! . Он является унарным оператором, помещаемым перед одиночным операндом. Оператор «логическое НЕ» используется для инверсии логического значения своего операнда и всегда возвращает true или false .

Если потребуется инвертировать значение выражения, например a && b , необходимо будет использовать круглые скобки: !(a && b) . Также с помощью оператора ! можно преобразовать любое значение x в его логический эквивалент, дважды применив оператор: !!x .

Логические операторы

Пример Название Результат
$a and $b И TRUE если и $a , и $b TRUE .
$a or $b Или TRUE если или $a , или $b TRUE .
$a xor $b Исключающее или TRUE если $a , или $b TRUE , но не оба.
! $a Отрицание TRUE если $a не TRUE .
$a && $b И TRUE если и $a , и $b TRUE .
$a || $b Или TRUE если или $a , или $b TRUE .

Смысл двух разных вариантов для операторов "and" и "or" в том, что они работают с различными приоритетами (смотрите таблицу Приоритет выполнения операторов).

Пример #1 Объяснение логических операторов

// ———————
// foo() никогда не буде вызвана, так как эти операторы являются шунтирующими (short-circuit)

$a = ( false && foo ());
$b = ( true || foo ());
$c = ( false and foo ());
$d = ( true or foo ());

// Результат выражения (false || true) присваивается переменной $e
// Действует как: ($e = (false || true))
$e = false || true ;

Читайте также:  Черно после перезагрузки фото

// Константа false присваивается $f, а затем значение true игнорируется
// Действует как: (($f = false) or true)
$f = false or true ;

// Константа true присваивается $h, а затем значение false игнорируется
// Действует как: (($h = true) and false)
$h = true and false ;

Результатом выполнения данного примера будет что-то подобное:

Логические операторы предназначены исключительно для работы с логическими выражениями и возвращают false или true.

Приведем таблицу логических операторов PHP:

Пример Название Результат
$a and $b Логическое ‘и’ TRUE если и $a, и $b TRUE .
$a or $b Логическое ‘или’ TRUE если или $a, или $b TRUE .
$a xor $b Исключающее ‘или’ TRUE если $a, или $b TRUE , но не оба.
! $a Отрицание TRUE если $a не TRUE .
$a && $b Логическое ‘и’ TRUE если и $a, и $b TRUE .
$a || $b Логическое ‘или’ TRUE если или $a, или $b TRUE .

Смысл двух разных вариантов для операторов "and" и "or" в том, что они работают с различными приоритетами.

Следует заметить, что вычисление логических выражений, содержащих такие операторы, идет всегда слева направо, при этом, если результат уже очевиден (например, false && что-то всегда дает false), то вычисления обрываются, даже если в выражении присутствуют вызовы функций. Например, в операторе $logic = 0&&(time()>100); стандартная функция time() никогда не будет вызвана.

Будьте осторожны с логическими операциями — не забывайте про удваивание символа. Обратите внимание, что, например, | и || — два совершенно разных оператора, один из которых может потенциально возвращать любое число, а второй — только false и true.

Операторы инкремента (++) и декремента (—) не работают с логическими переменными.