PHP – и / или ключевые слова

Is && то же самое, что и «и», и это || то же, что и «или» в PHP?

Я сделал несколько тестов, и кажется, они ведут себя одинаково. Есть ли различия?

Если нет, есть ли какие-либо другие знаки PHP, которые имеют эквиваленты слов, и считаете ли вы, что код упрощает чтение?

and и / or имеют более низкий более низкий приоритет, чем && и || , && и || имеют более высокий приоритет, чем оператор присваивания ( = ), and и / or имеют более низкий.

http://www.php.net/manual/en/language.operators.precedence.php

Обычно это не имеет никакого значения, но бывают случаи, когда незнание об этом различии может привести к неожиданному поведению. См. Примеры здесь:

http://php.net/manual/en/language.operators.logical.php

Да, они логически одинаковы. (Я считаю, что «&&» и «||» являются предпочтительным выбором в стандартах кодирования Zend , но я не могу найти никакой конкретной информации об этом, так что все могло быть мечтой или что-то в этом роде.)

Это сказало:

  1. "&&" и "||" имеют более высокий приоритет, чем «И» и «ИЛИ» (вряд ли когда-либо будут актуальны, но вы никогда не знаете).

  2. Многие другие языки используют «&&» и «||», а не текстовые эквиваленты, поэтому может возникнуть идея пойти с этим.

  3. Пока вы используете свой выбранный набор операторов последовательно, это не имеет большого значения.

Меня беспокоит:

 echo (false and false ? true : true); // (empty/false) 

Вы можете догадаться, что существует только возможный вывод «1» (истина), поскольку нет случая, который мог бы вывести false … … но он будет «» (false).

Использование && в качестве оператора в этом случае удовлетворяет, по крайней мере, моим ожиданиям:

 echo (false && false ? true : true); // 1 

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

Разница заключается в приоритете . Но не только сравнивать друг с другом!

В большинстве случаев вы не будете возражать, но есть конкретные случаи, когда вам нужно сделать один шаг назад и посмотреть на общую картину. Возьмите это, например:

 // The result of the expression (true && false) is assigned to $g // Acts like: ($g = (true && false)) $g = true && false; // The constant true is assigned to $h before the "and" operation occurs // Acts like: (($h = true) and false) $h = true and false; var_dump($g, $h); 

Это будет производить соответственно:

 bool(false) bool(true) 

Другими словами, && имеет более высокое предпочтение, чем = , которое имеет более высокий приоритет, чем and , как указано в http://php.net/manual/en/language.operators.precedence.php . (Это упоминается в других ответах, но я думаю, что это стоит детализировать, поскольку неправильное использование может привести к логическим ошибкам)

Надеюсь, это может вам помочь. Вы можете найти более подробную информацию по адресу http://php.net/manual/en/language.operators.logical.php