PHP

Особенности приоритетов and и &&, or и ||

Наверное, каждому из нас приходилось когда-либо приходилось использовать следующую конструкцию:
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
        or die("Could not connect: " . mysql_error());

Но многие даже не задумывается о том, как этот код работает. Чтобы все разъяснить и расставить по полочкам, в этой статье я расскажу об особеннностях приоритетов and, &&, or, ||.

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

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

А теперь, чтоб стало еще понятнее, рассмотрим пример кода:
// Оператор "||" имеет больший приоритет, чем "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 "$var3";   // => 0

Тоже самое можно сказать и про операторы and и &&:
// в переменную $var попадет true, несмотряна то, что true and false дает false  
$var = true and false; 
// => 1
Теги:
and, or
Добавлено: 03 Апреля 2018 18:50:01 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...