PHP and OR
- Логическое ИЛИ (OR и ||)
- Логическое И (AND и &&)
- Исключающее ИЛИ (XOR)
- Логическое НЕ (!)
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
.
Чтобы стало понятнее, как они работают, приведем следующий пример:
<?php // Оператор "||" имеет больший приоритет, чем "or" // Результат выражения (false || true) будет присвоен переменной $var1 // Действие приоритета: $var1 = (false || true) $var1 = false || true; echo $var1; // => 1 // Сначала переменной присваивается значение false, а затем вычисляется второй операнд // Действие приоритета: ($var2 = false) or true $var2 = false or true; echo $var2; // false не выводится // ($var3 = 0) or 3 $var3 = 0 or 3; echo "<br>$var3"; // => 0 ?>
Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:
<?php $a = (6 == 6) || (4 <= 9); // или так echo ('c' != 'd') or ('A' === 'A'); ?>
Стоит упомянуть еще об одном важном моменте, касательно обоих операторов OR
и ||
. Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает true
, то правый операнд вычисляться не будет. Это позволяет экономить время исполнения, но нужно внимательно следить за тем, чтобы код, от которого может зависеть корректная работа программы, не был помещен в правый операнд.
Логическое И (AND и &&)
Оператор логическое И обозначается как AND
или &&
. Он выполняет операцию «логическое И» над двумя операндами. Он возвращает true
тогда и только тогда, когда оба операнда имеют значение true
. Если один или оба операнда возвращают значение false
, оператор возвращает false
. Смысл двух разных вариантов записи оператора «логическое И» такой же как и у двух предыдущих операторов, а именно в том, что они работают с различными приоритетами.
Сначала разберем как работает оператор &&
. И так, если оба его операнда имеют истинное значение, он возвращает true
. Если хотя бы один или оба его операнда возвращают значение false
, он тоже вернет false
.
Оператор AND
работает также как и оператор &&
за одним исключением, если оператор AND
используется с присваиванием, то сначала он вычислит и вернёт значение левого операнда, в остальном он работает точно также как и оператор &&
. Если хотя бы один из его операндов возвращает значение false
, он тоже вернет false
, также если оба операнда возвращают ложные значения, он возвращает false
.
Для понимания рассмотрим теперь, как это работает на практике:
<?php // Оператор "&&" имеет больший приоритет, чем "and" // Результат выражения (true && false) будет присвоен переменной $bar1 // Действие приоритета: $bar1 = (true && false) $bar1 = true && false; // Сначала переменной присваивается значение true, а затем вычисляется второй операнд // Действие приоритета: ($bar2 = true) and false $bar2 = true and false; var_dump($bar1, $bar2); // ($bar3 = 9) and 3 $bar3 = 9 and 3; echo "<br>$bar3"; // => 9 ?>
Исключающее ИЛИ (XOR)
Оператор исключающее ИЛИ обозначается как XOR
. Он возвращает значение true
, если один и только один из операндов имеет значение true
. Если оба операнда имеют значение true
, оператор вернет значение false
.
Так как приоритет оператора XOR
такой же как и у операторов AND
и OR
(ниже чем у оператора присваивания), и он используется в выражении с присваиванием, то сначала он вычисляет и возвращает значение левого операнда.
<?php // ($a1 = 19) xor 5 > 6 $a1 = 19 xor 5 > 6; var_dump($a1); // => 19 var_dump(true xor true); // false var_dump((2 < 3) xor (5 != 5)); // true ?>
Логическое НЕ (!)
Оператор логическое НЕ, его также называют отрицание обозначается знаком !
. Он является унарным оператором, помещаемым перед одиночным операндом. Оператор «логическое НЕ» используется для инверсии логического значения своего операнда и всегда возвращает true
или false
.
Если потребуется инвертировать значение выражения, например a && b
, необходимо будет использовать круглые скобки: !(a && b)
. Также с помощью оператора !
можно преобразовать любое значение x
в его логический эквивалент, дважды применив оператор: !!x
.
<?php $a1 = 10; var_dump((11 == 11)); // true // оператора ! инвертирует значение var_dump(!(11 == 11)); // false // преобразует в логическое значение var_dump(!!$a1); // true ?>
puzzleweb.ru
Логические операции
Логические операции позволяют комбинировать логические значения (называемые также истинностными) для получения новых логических значений. Как показано в таблице ниже, в языке PHP поддерживаются стандартные логические операции (and, or, not и xor), причем первые две имеют альтернативные версии.
Операция | Описание |
---|---|
and | Операция, результат которой принимает истинное значение тогда и только тогда, когда оба ее операнда имеют истинное значение |
or | Операция, результат которой принимает истинное значение, если один из ее операндов (или оба операнда) имеет истинное значение |
! | Операция, результат которой принимает истинное значение, если ее единственный операнд (задаваемый справа от знака операции) имеет ложное значение, и ложное значение, если операнд имеет истинное значение |
xor | Операция, результат которой принимает истинное значение, если любой из ее операндов (но не оба одновременно) имеет истинное значение |
&& | То же, что и операция and, но связывает свои операнды сильнее по сравнению с этой операцией |
|| | То же, что и операция or, но связывает свои операнды сильнее по сравнению с этой операцией |
Операции && и || должны быть знакомы программистам, работающим с языком C. Операцию ! обычно называют not, поскольку она становится отрицанием для того операнда, к которому применяется.
Чтобы проверить, имеют ли оба операнда значение TRUE, следует использовать оператор AND, который можно записать и как двойной амперсанд (&&). Оба оператора, AND и &&, являются логическими, их единственное отличие в том, что оператор && имеет более высокий приоритет, чем оператор AND. То же самое относится к операторам OR и ||. Оператор AND возвращает TRUE, только если оба операнда имеют значение TRUE; в противном случае возвращается значение FALSE.
Чтобы проверить, имеет ли хотя бы один операнд значение TRUE, следует использовать оператор OR, который можно записать и как двойную вертикальную линию (||). Этот оператор возвращает TRUE, если хотя бы один из операндов имеет значение TRUE.
При использовании оператора OR в программе могут появиться трудноуловимые логические ошибки. Если PHP обнаружит, что первый операнд имеет значение TRUE, он не станет вычислять значение второго операнда. Это позволяет экономить время исполнения, но вы должны внимательно следить за тем, чтобы код, от которого зависит корректная работа программы, не был помещен во второй операнд.
Проверить, имеет ли значение TRUE только один из операндов (но не оба сразу), позволяет оператор XOR. Этот оператор возвращает значение TRUE, если один и только один из операндов имеет значение TRUE. Если оба операнда имеют значение TRUE, оператор вернет значение FALSE.
Инвертировать логическое значение можно с помощью оператора NOT, который часто записывается и в виде восклицательного знака (!). Он возвращает значение TRUE, если операнд имеет значение FALSE, и значение FALSE, если операнд имеет значение TRUE.
В таблице ниже приведены некоторые логические выражения и их результаты:
Пример логического выражения | Результат |
---|---|
TRUE AND TRUE | TRUE |
FALSE AND TRUE | FALSE |
TRUE OR FALSE | TRUE |
FALSE OR FALSE | FALSE |
TRUE XOR TRUE | FALSE |
TRUE XOR FALSE | TRUE |
!TRUE | FALSE |
!FALSE | TRUE |
Операции сравнения
В таблице ниже показаны операции сравнения, которые могут применяться либо с числами, либо со строками:
Операция | Наименование | Описание |
---|---|---|
== | Равно | Операция, результат которой принимает истинное значение, если ее операнды равны друг другу, в противном случае принимает ложное значение |
!= | Не равно | Операция, результат которой принимает ложное значение, если ее операнды равны друг другу, в противном случае принимает истинное значение |
< | Меньше | Операция, результат которой принимает истинное значение, если левый операнд меньше правого, в противном случае принимает ложное значение |
> | Больше | Операция, результат которой принимает истинное значение, если левый операнд больше правого, в противном случае принимает ложное значение |
<= | Меньше или равно | Операция, результат которой принимает истинное значение, если левый операнд меньше или равен правому, в противном случае принимает ложное значение |
>= | Больше или равно | Операция, результат которой принимает истинное значение, если левый операнд больше или равен правому, в противном случае принимает ложное значение |
=== | Идентично | Операция, результат которой принимает истинное значение, если оба операнда равны друг другу и относятся к одному и тому же типу, в противном случае принимает ложное значение |
Необходимо следить за тем, чтобы не допустить одну весьма распространенную ошибку — не путать операцию присваивания (=) с операцией сравнения (==).
Приоритет операций
Безусловно, не следует слишком злоупотреблять стилем программирования, в котором последовательность выполнения операций в основном обусловлена использованием правил приоритета, поскольку код, написанный в таком стиле, является сложным для восприятия теми, кто в дальнейшем будет изучать его, но следует отметить, что операции сравнения имеют более высокий приоритет, чем логические операции. Это означает, что оператор с выражением проверки, подобном приведенному ниже
Код PHP
$var1 = 14; $var2 = 15; if (($var1 < $var2) && ($var2 < 20)) echo '$var2 больше $var1 но меньше 20';
можно переписать как
Код PHP
... if ($var1 < $var2 && $var2 < 20) ...
Инструкция if — else
Инструкция if позволяет исполнить блок кода, если условное выражение в этой инструкции имеет значение TRUE; в противном случае блок кода не исполняется. В качестве условия может применяться любое выражение, включающее проверки на ненулевое значение, равенство, NULL с участием переменных и значений, возвращаемых функциями.
Не важно, какие отдельные условные выражения составляют условное предложение. Если условие истинно, исполняется программный код, заключенный в фигурные скобки ({}). В противном случае PHP игнорирует его и переходит к проверке второго условия, проверяя все условные предложения, которые вы записали, пока не наткнется на инструкцию else, после чего автоматически выполнит этот блок. Инструкция else не является обязательной.
Синтаксис инструкции if:
if (условное выражение) { блок программного кода; }
Если в результате вычисления условного выражения получается значение TRUE, то блок программного кода, расположенный после него, будет исполнен. В следующем примере если переменная $username имеет значение ‘Admin’, будет выведено приветственное сообщение. В противном случае ничего не произойдет:
Код PHP
$username = "Admin"; if ($username == "Admin") { echo 'Добро пожаловать на страницу администратора.'; }
Если блок программного кода содержит только одну инструкцию, то фигурные скобки необязательны, тем не менее, хорошая привычка – ставить их всегда, поскольку с ними код легче читается и редактируется.
Необязательная инструкция else – это блок программного кода, исполняемый по умолчанию, когда условное выражение возвращает значение FALSE. Инструкцию else нельзя использовать отдельно от инструкции if, поскольку у else нет собственного условного выражения. То есть else и if в вашем коде всегда должны быть вместе:
Инструкции if и else
$username = "no admin"; if ($username == "Admin") { echo 'Добро пожаловать на страницу администратора.'; } else { echo 'Добро пожаловать на страницу пользователя.'; }
Не забывайте закрывать фигурной скобкой блок кода в инструкции if, если вы поставили фигурную скобку в начале блока. В блоке else тоже должны быть открывающая и закрывающая фигурные скобки, как в блоке if.
Все это хорошо, кроме случаев, когда вам требуется проверить несколько условий подряд. Для этого подойдет инструкция elseif. Она позволяет проверять дополнительные условия, пока не будет найдено истинное или достигнут блок else. У каждой инструкции elseif есть собственный блок кода, размещаемый непосредственно после условного выражения инструкции elseif. Инструкция elseif идет после инструкции if и перед инструкцией else, если таковая имеется.
Синтаксис инструкции elseif немного сложнее, но следующий пример поможет вам разобраться в нем:
Проверка нескольких условий
$username = "Guest"; if ($username == "Admin") { echo 'Добро пожаловать на страницу администратора.'; } elseif ($username == "Guest") { echo 'Просмотр не доступен.'; } else { echo 'Добро пожаловать на страницу пользователя.'; }
Здесь проверяется два условия, и, в зависимости от значения переменной $username, выполняются разные действия. И еще есть возможность что-то сделать, если значение переменной отличается от первых двух.
Тернарный оператор ?:
Оператор ?: – это тернарный (трехместный) оператор, который принимает три операнда. Он работает аналогично инструкции if, но возвращает значение одного из двух выражений. Выражение, которое будет вычисляться, определяется условным выражением. Двоеточие (:) служит разделителем выражений:
(условие) ? вычислить_если_условие_истинно : вычислить_если_условие_ложно;
В примере ниже проверяется значение, и в зависимости от его значения (TRUE или FALSE) возвращаются разные строки:
Создание сообщения с помощью оператора ?:
$logged_in = TRUE; $user = "Игорь"; $banner = (!$logged_in) ? "Зарегистрируйтесь!" : "С возвращением, $user!"; echo $banner;
Вполне очевидно, что приведенный выше оператор эквивалентен следующему оператору:
Код PHP
$logged_in = TRUE; $user = "Игорь"; if (!$logged_in) { $banner = "Зарегистрируйтесь!"; } else { $banner = "С возвращением, $user!"; } echo $banner;
Инструкция switch
Инструкция switch сравнивает выражение с несколькими значениями. Как правило, в качестве выражения используется переменная, в зависимости от значения которой должен быть исполнен тот или иной блок кода. Например, представим себе переменную $action, которая может иметь значения «ADD» (добавить), «MODIFY» (изменить) и «DELETE» (удалить). Инструкция switch позволяет легко определить блок кода, который должен исполняться для каждого из этих значений.
Чтобы показать разницу между инструкциями if и switch, выполним проверку переменной на соответствие нескольким значениям. В примере ниже приведен программный код, реализующий такую проверку на базе инструкции if, а в последующем примере – на базе инструкции switch:
Проверка на соответствие одному из нескольких значений (инструкция if)
if ($action == "ADD") { echo "Выполнить добавление."; echo "Количество инструкций в каждом блоке не ограничено."; } elseif ($action == "MODIFY") { echo "Выполнить изменение."; } elseif ($action == "DELETE") { echo "Выполнить удаление."; }
Проверка на соответствие одному из нескольких значений (инструкция switch)
switch ($action) { case "ADD": echo "Выполнить добавление."; echo "Количество инструкций в каждом блоке не ограничено."; break; case "MODIFY": echo "Выполнить изменение."; break; case "DELETE": echo "Выполнить удаление."; break; }
Инструкция switch берет значение, стоящее рядом с ключевым словом switch, и начинает сравнивать его со всеми значениями, стоящими рядом с ключевыми словами case, в порядке их расположения в программе. Если соответствие не найдено, не исполняется ни один из блоков. Как только совпадение обнаружено, выполняется соответствующий блок кода. Расположенные ниже блоки кода также исполняются – до конца инструкции switch или до ключевого слова break. Это удобно для организации процесса, состоящего из нескольких последовательных шагов. Если пользователь уже проделал некоторые шаги, он сможет продолжить процесс с того места, на котором прервался.
Выражение рядом с инструкцией switch должно возвращать значение элементарного типа, например число или строку. Массив можно задействовать только в виде его отдельного элемента, имеющего значение элементарного типа.
Выбор по умолчанию
Если значение условного выражения не совпало ни с одним из предложенных в инструкциях case вариантов, инструкция switch и в этом случае позволяет что-то сделать, примерно как инструкция else конструкции if, elseif, else. Для этого нужно последним вариантом в списке выбора сделать инструкцию default:
Создание сообщения об ошибке с помощью инструкции default
$action = "REMOVE"; switch ($action) { case "ADD": echo "Выполнить добавление."; echo "Количество инструкций в каждом блоке не ограничено."; break; case "MODIFY": echo "Выполнить изменение."; break; case "DELETE": echo "Выполнить удаление."; break; default: echo "Ошибка: команда $action не допустима, ". "можно использовать только команды ADD, MODIFY и DELETE."; }
Кроме обычного, инструкция switch поддерживает альтернативный синтаксис – конструкцию из ключевых слов switch/endswitch, определяющих начало и конец инструкции вместо фигурных скобок:
Инструкция switch завершается ключевым словом endswitch
switch ($action): case "ADD": echo "Выполнить добавление."; echo "Количество инструкций в каждом блоке не ограничено."; break; case "MODIFY": echo "Выполнить изменение."; break; case "DELETE": echo "Выполнить удаление."; break; default: echo "Ошибка: команда $action не допустима, ". "можно использовать только команды ADD, MODIFY и DELETE."; endswitch;
Прерывание исполнения
Если должен быть исполнен только блок кода, соответствующий определенному значению, то в конце этого блока следует вставить ключевое слово break. Интерпретатор PHP, встретив ключевое слово break, перейдет к исполнению строки, расположенной после закрывающей фигурной скобки инструкции switch (или ключевого слова endswitch). Но если не использовать инструкцию break то проверка продолжается в последующих ветвях case конструкции switch. Ниже показан пример:
Что происходит при отсутствии операторов break
$action="ASSEMBLE ORDER"; switch ($action) { case "ASSEMBLE ORDER": echo "Собрать заказ.<br>"; case "PACKAGE": echo "Упаковать.<br>"; case "SHIP": echo "Доставить заказчику.<br>"; }
Если переменная $action будет иметь значение «ASSEMBLE ORDER», результат работы этого фрагмента будет следующим:
Собрать заказ. Упаковать. Доставить заказчику.
Если предположить, что стадия сборки уже была пройдена, и переменная $action имеет значение «PACKAGE», то будет получен следующий результат:
Упаковать. Доставить заказчику.
Иногда, отсутствие операторов break бывает полезным, как в приведенном примере, где формируются стадии заказа, но в большинстве случаев следует использовать этот оператор.
addphp.ru
<?php
// --------------------
// foo() никогда не буде вызвана, так как эти операторы являются шунтирующими (short-circuit)
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// --------------------
// "||" имеет больший приоритет, чем "or"
// Результат выражения (false || true) присваивается переменной $e
// Действует как: ($e = (false || true))
$e = false || true;
// Константа false присваивается $f, а затем значение true игнорируется
// Действует как: (($f = false) or true)
$f = false or true;
var_dump($e, $f);
// --------------------
// "&&" имеет больший приоритет, чем "and"
// Результат выражения (true && false) присваивается переменной $g
// Действует как: ($g = (true && false))
$g = true && false;
// Константа true присваивается $h, а затем значение false игнорируется
// Действует как: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
?>
php.ru
Осмысление логических операторов
Чтобы лучше понять смысл работы логических операторов в PHP, мы приведем немного абстрактный пример. Допустим, у нас есть результат отдельного выражения с использованием операторов сравнения. Он принадлежит логическому типу, так как результатом сравнения всегда является true или false. Мы можем назвать его высказыванием. Это верно ведь операцию «10 > 5» можно заменить высказыванием, — «Я утверждаю, что число десять больше пяти». Соответственно и ответ будет «правда», или выражаясь программным языком true.
Что если нам нужно построить более сложное высказывание? Например, — «Я утверждаю, что число десять больше пяти, а также число семь меньше трех». Сложность такого высказывания в том, что в нем содержится два утверждения, а результат должен быть одним: true или false. Мы все знаем, что общим результатом данного высказывания будет false так как семь больше трех, что делает всё выражение не правдой. Как построить такое выражение с помощью PHP? Именно для этого и нужны логические операторы.
Ниже мы приводим таблицу с описанием всех логических операторов существующих в PHP. Сразу за таблицей идет подробный разбор принципов их работы и ряд примеров, демонстрирующих использование.
(возвращает «true»)
Таким образом, высказывание, — «Я утверждаю, что число десять, деленное на пять равно двум, а также, что два массива, содержащие строку “пример“ равны между собой», можно записать в виде примера представленного ниже.
Логические операторы функционируют по уже известному нам принципу:
Логический оператор «отрицание», применяется к одному значению стоящему справа от него. Принцип его работы тот же самый, только без третьего пункта.
Нужно отметить, что в PHP присутствуют несколько логических операторов осуществляющих одно и тоже действие: and и &&, or и ||. Разница между ними только в том, что операторы && и || обладают более высоким приоритетам. Чтобы не запутать себя, мы настоятельно рекомендуем использовать только && и || вместо and и or.
coder-booster.ru
Vu sur homeandlearn.co.uk
La raison pour laquelle il existe deux types de «ET» et de «OU» est qu’ils ont des priorités différentes. Voir le paragraphe précédence d’opérateurs. Exemple #1 Illustration des opérateurs logiques. <?php // ——————— // foo() ne sera jamais appelée car ces opérateurs s'annulent $a = (false && foo()); $b = (true || foo());
Vu sur jquery-az.com
10 mai 2010 — If you use AND and OR , you’ll eventually get tripped up by something like this: $this = true; $that = false; $truthiness = $this and $that;. Want to guess what $truthiness equals? If you said false … bzzzt, sorry, wrong! $truthiness above has the value true . Why? = has a higher precedence than and .
Vu sur prestashop.com
14 avr. 2018 — Description. The standard logical operators and, or, not, and xor are supported by PHP. Logical operators first convert their operands to boolean values and then perform the respective comparison. Here is the list of logical operators : …
Vu sur qph.fs.quoracdn.net
PHP Operators. Operators are used to perform operations on variables and values. PHP divides the operators in the following groups: Arithmetic operators; Assignment operators; Comparison operators; Increment/Decrement operators; Logical operators; String operators; Array operators …
Vu sur image.slidesharecdn.com
Bonjour, Je voudrais savoir s’il est possible en php de faire des structures if un peu complexes, […]
Vu sur image.slidesharecdn.com
As well as the PHP comparison operators you saw earlier, there’s also something called Logical Operators. You typically use these when you want to test more than one condition at a time. For example, you could check to see whether the username and password are correct from the same If Statement. Here’s the table of …
Vu sur i.imgur.com
This book consists of short lessons, each focusing on a particular aspect of PHP and/or MySQL. The lessons are arranged in a logical order of study. Although you can study the lessons in any order, you often need to know what is taught in the early lessons before the later ones make sense. It is not meant as an exhaustive …
Vu sur manomayasoft.com
The PDFlib library is now available for use with PHP; in fact, the latest version of PHP comes with the PDFlib already included. All you need to do to activate it and then you can begin creating your own dynamic PDF documents. In this chapter we shall introduce the PDFlib library and examine some of the functions available …
Vu sur wikihow.com
You would need to test both the conditions $a >= 0 and $a = 0 && $a <=100 PHP supports logical AND, OR, XOR (exclusive or), and NOT. The set of logical operators and their use is summarized in Table 1.4. Table 1.4 PHP's Logical Operators The and and or operators have …
Vu sur qph.fs.quoracdn.net
I think I must have named over 30, as I’ve been programming since 1967. I’ve used all the main ones, and numerous exotic ones such as APL, Algol, B (the predecessor to C), LISP, Lua, PL/I, Scratch, and SNOBOL4. I’ve programmed in most of the popular web site languages, such as Java, PERL, and Python. So, why PHP …
www.expert-php.fr
Условия в php имеют ключевое слово if. И логические операторы OR или ||, AND или &&.
Конструкция условия if следующая:
if (условие) тогда действие;
Рассмотрим пример использования or and в операторе if
<?php
$x = 1;
if (isset($x)) echo "переменная x существует";
////////////////////////////////////////////////
if (isset($x) && $x == 1 ) echo "<br>x = 1";
////////////////////////////////////////////////
$x = $x+1;
if (isset($x) and $x == 2 ) echo "<br>x = 2";
////////////////////////////////////////////////
$x++;
if (isset($x) and $x == 3 && $x != 0) echo "<br>x = 3 and x != 0";
?>
Итак, мы видим, что в первом случае, есть только одно условие if (isset($x)), другими словами: если переменная $x существует, тогда выводится сообщение echo "переменная x существует";
Второе условие более сложнее: if (isset($x) && $x == 1 ) — если переменная существует и равна 1, тогда выводим echo "<br>x = 1"; <br> — это перевод строки.
Логический оператор AND выполняет условие только в том случае, если все условия истинные. Если хотя бы одно условие ложно, то все условие ложно. Вот почему оператор AND иногда сравнивается с математическим умножением. 451*6845*655*0 = 0. Какие бы не были числа, но если в выражении есть ноль, то все выражение нулевое.
Третье условие аналогично второму, только вместо логического оператора && используем оператор and. Этим я хотел показать, что логические операторы && и and имеют тот же смысл.
Четвертое условие показывает сложные условия, которые вы можете использовать в своих программах.
$x = $x+1;
$x++;
Две строки выше имеют один и тот же смысл. Они увеличивают переменную на единицу.
Результат работы данного кода будет следующим:
Логический оператор OR отличается от оператора AND тем, что если в условии есть хоть одно истинное условие, то все условие истинно. Вот почему оператор OR иногда сравнивается с математическим сложением. 0+0+0+1 = 1. Если в выражении много нулей, но есть хотя бы одна единица, то все выражение ненулевое.
Пример:
<?php
$x = 1;
$y = 5;
if ($x == 1 or $y ==2) echo "x = 1 or y = 2 хотя на самом деле x = $x,а y = $y";
if ($x == 1 || $y ==2) echo "<br>x = 1 or y = 2 хотя на самом деле x = $x,а y = $y";
?>
Мы видим, что на самом деле выполняется только одно условие, второе условие ложно, но благодаря оператору OR все выражение истинно. Также мы видим, что операторы OR и || идентичны.
Результат работы данного кода будет следующим:
life-prog.ru
<?php
// --------------------
// foo() никогда не будет вызвана, т.к. эти операторы являются шунтирующими (short-circuit)
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// --------------------
// "||" имеет больший приоритет, чем "or"
// Результат выражения (false || true) присваивается переменной $e
// Действует как: ($e = (false || true))
$e = false || true;
// Константа false присваивается $f, а затем значение true игнорируется
// Действует как: (($f = false) or true)
$f = false or true;
var_dump($e, $f);
// --------------------
// "&&" имеет больший приоритет, чем "and"
// Результат выражения (true && false) присваивается переменной $g
// Действует как: ($g = (true && false))
$g = true && false;
// Константа true присваивается $h, а затем значение false игнорируется
// Действует как: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
?>
php.net
Description
The standard logical operators and, or, not, and xor are supported by PHP. Logical operators first convert their operands to boolean values and then perform the respective comparison.
Here is the list of logical operators :
PHP logical && operator
» />
This above pictorial helps you to understand the concept of LOGICAL AND operation with an analogy of taps and water.
In case-1 of the picture, both of the taps are closed, so the water is not flowing down. Which explains that if both of conditions are FALSE or 0, the return is FALSE or 0.
In case-2 of the picture, one of the taps are closed, even then, the water is not flowing down. Which explains that even if any of conditions are FALSE or 0, the return is FALSE or 0.
case-3 of the picture resembles CASE -2.
In case-4 of the picture, both of the taps are open, so the water is flowing down. Which explains that if both of conditions are TRUE or 1, the return is TRUE or 1.
So we can conclude that if and only if, both of the conditions are TRUE or 1, LOGICAL AND operations returns TRUE or 1.
PHP logical || operator
» />
The above pictorial helps you to understand the concept of LOGICAL OR operation with an analogy of taps and water.
In case-1 of the picture, both of the taps are closed, so the water is not flowing down. Which explains that if both of conditions are FALSE or 0, the return is FALSE or 0.
In case-2 of the picture, one of the taps are closed, and we can see that the water is flowing down. Which explains that if any of conditions are TRUE or 1, the return is TRUE or 1.
case-3 of the picture resembles CASE -2.
In case-4 of the picture, both of the taps are open, so the water is flowing down. Which explains that if both of conditions are TRUE or 1, the return is TRUE or 1.
So we can conclude that in LOGICAL OR operation if any of the conditions are true, the output is TRUE or 1.
Example :
Output :
View the example in the browser
w3resource.com