belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

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

PHP поддерживает следующие стандартные логические операторы: 'AND' и '&&' (логическое И), 'OR' и '||' (логическое ИЛИ), '!' (логическое НЕ) и 'XOR' (исключающее ИЛИ). Все они используются в логических выражениях для определения того или иного хода выполнения программы в зависимости от возвращаемого выражением результата и относятся к бинарным операторам, за исключением оператора '!', который является унарным. При использовании логических операторов их операнды преобразуются к булевому типу данных (смотреть), а результат зависит от приведенных логических значений операндов и вида логического оператора (см. таблицу 3.12).

Пример Название Результат
$a and $b Логическое И TRUE, если оба значения и $a, и $b равны TRUE.
$a or $b Логическое ИЛИ TRUE, если оба значения равны TRUE или хотя бы одно из значений $a или $b равно TRUE.
$a xor $b Исключающее ИЛИ TRUE, если одно из значений $a или $b равно TRUE, но не оба сразу.
! $a Логическое НЕ TRUE, если значение $a не равно TRUE.
$a && $b Логическое И TRUE, если оба значения и $a, и $b равны TRUE.
$a || $b Логическое ИЛИ TRUE, если оба значения равны TRUE или хотя бы одно из значений $a или $b равно TRUE.

Таблица 3.12. Логические операторы

Разница между операторами 'AND' и '&&', а также 'OR' и '||' заключается в том, что операторы 'AND', 'OR' и 'XOR' имеют более низкий приоритет, который даже ниже, чем у операторов присваивания (см. таблицу операторов PHP).

Важно понимать, как интерпретатор обрабатывает логические выражения. Если в выражении с оператором '||' первый (левый) операнд будет иметь значение true или в выражении с оператором '&&' первый операнд будет иметь значение false, то второй (правый) операнд уже вычисляться не будет. Это связано с тем, что конечный результат в таких случаях уже не изменится (см. таблицу 3.12), а следовательно отпадает и необходимость тратить время на обработку кода второго операнда. Однако при этом нужно быть внимательным и не помещать в правый операнд код, от которого может зависеть правильная работа программы.

Использование логических операторов показано в примере 3.13.

<?php
$a=5||true;  //Теперь $a==true, т.к. операнды преобразуются к логическому типу,
				 //поэтому 5 преобразовалось в true
$a=0||false; //Теперь $a==false, т.к. 0->false

$a=5&&8; 		//Теперь $a==true, т.к. 5->true и 8->true				
$a='0'&&8;	//Теперь $a==false, т.к. '0'->false				

$a=!false;	 //Теперь $a==true				
$a=!5; 		 //Теперь $a==false, т.к. 5->true

/* Функция foo() не будет вызываться из-за шунтов */
$a=(false&&foo());
$b=(true||foo());
$c=(false and foo());
$d=(true or foo());

/* Отличие '||' от 'or' и '&&' от 'and' */
$a=false||true; 		//Действует как ($a=(false||true))
$a=false or true; 	//Действует как (($a=false) or true)
$a=false&&true; 	  //Действует как ($a=(false&&true))
$a=false and true; 	//Действует как (($a=false) and true)

$a=5 xor 0; 			//Теперь $a==5, действует как (($a=5) xor 0)
$a=5 and 0; 			//Теперь $a==5, действует как (($a=5) and 0)
$a=5 or 0; 				//Теперь $a==5, действует как (($a=5) or 0)

$a=5||0; 				//Теперь $a==true, действует как ($a=(5||0))
$a=5&&0; 				  //Теперь $a==false, действует как ($a=(5&&0))
$a=(5 xor 6); 			//Теперь $a==true, действует как ($a=(5 xor 6))
?>

Пример 3.13. Использование логических операторов

Контрольные вопросы и задания

  1. Опишите логические операторы, а также особенности их применения.

Словарь новых английских слов

operator [ˈɒpəreɪtə] – оператор.
clone [kləʊn] – двойник, клон.
instance [ˈɪnst(ə)ns] – образец, пример.
or [ɔː] – или.
while [wʌɪl] – до тех пор (пока).
notice [ˈnəʊtɪs] – предупреждение, уведомление.
undefined [ʌndɪˈfʌɪnd] – неопределенный.
variable [ˈvɛːrɪəb(ə)l] – переменная.
error [ˈɛrə] – ошибка.
parse [pɑːz] – разбор, анализ.
unexpected [ʌnɪkˈspɛktɪd] – непредвиденный, внезапный.
syntax [ˈsɪntaks] – синтаксис, синтаксический.
Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх