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



belarusweb.net

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

PHP+MySQL >>>

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

3.1. Понятия выражения и оператора. Приоритет операторов.

Выражения являются самыми важными строительными элементами в PHP, поскольку почти все, что пишется в коде является выражением.

Выражение – это любая единица исходного кода, которая может быть вычислена интерпретатором для получения значения. Другими словами, к выражению следует относить любую фразу на языке PHP, которую можно вычислить и в результате получить значение.

Выражения делятся на простые (первичные) и сложные. Простые выражения не могут быть разделены на еще более простые выражения. К ним относятся, например, константы или переменные. Сложные выражения составляются из более простых при помощи различных операторов. Примером может служить выражение '$d=($a+$b)*4'.

Кстати, не стоит путать понятия инструкции и выражения, поскольку они несколько отличаются по своему смысловому содержанию, т.к. выражения – это все, что вычисляется для получения значений, а инструкция – это указание на выполнение программой какого-либо действия.

Оператор – это элемент программного кода, который используется для выполнения определенного действия в выражении.

Примерами выражений с использованием операторов могут служить '$a+$b', '$a=$b', '$a!=$b', '$a*=3', '++$b', '$a||$b' и др. Здесь символы и комбинации символов '+', '=', '!=', '*=', '++', '||' являются операторами, а выражения или значения, расположенные по сторонам операторов, называют операндами.

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

Кроме того, операторы могут отличаться своим приоритетом, который определяет порядок (очередность) их выполнения в ходе вычисления значения выражения. Первыми выполняются операторы с более высоким приоритетом, затем операторы с более низким приоритетом и так далее по мере убывания их приоритетности. Если приоритет операторов одинаков, они группируются и обрабатываются согласно их ассоциативности. При этом операторы, имеющие одинаковый приоритет, но не имеющие ассоциативности, не могут использоваться друг за другом. Также отметим, что для принудительного указания порядка выполнения операторов используются круглые скобки (см. пример 3.1).

<?php
$a=5+7*2; 		//Теперь $a==19, т.к. приоритет оператора '*' выше, чем у '+'
echo $a.'<br>';

$b=(5+7)*2; 	//Теперь $b==24, т.к. порядок был указан при помощи скобок
echo $b.'<br>';

$c=2;

//$a<$b>$c;  	//Такое выражение недопустимо в PHP, т.к. операторы '<' и '>'
					//имеют равный приоритет, но не имеют ассоциативности
$a<($b>$c);		//А вот так можно, т.к. скобки явно указывают порядок выполнения
			 
$c=$a=$b; 		//Тоже самое, что и $c=($a=$b);, т.к. все операнды имеют равный 
					//приоритет и правую ассоциативность

$d=5-6-7; 		//Теперь $d==-8, т.к. операнды '-' и '-' имеют равный приоритет и 
echo $d.'<br>'; //левую ассоциативность, поэтому 5-6-7==(5-6)-7. Но лучше явно 
					//указывать порядок выполнения при помощи скобок			

	/* Старайтесь всегда использовать скобки, непосредственно определяя порядок 
	группировки и не полагаясь на приоритет или ассоциативность операторов,
	поскольку такое поведение может меняться от одной версии PHP к другой!!! */		 
?>

Пример 3.1. Использование операторов различной приоритетности и ассоциативности

Старайтесь всегда использовать скобки даже, если они необязательны, непосредственно определяя порядок группировки и не полагаясь на приоритет или ассоциативность операторов, поскольку такое поведение может изменяться от одной версии PHP к другой.

Все основные операторы языка PHP перечислены в таблице 3.2 в порядке убывания их приоритетов. Чем ниже приоритет, тем ниже находится строка с соответствующими операторами. Если операторы имеют одинаковый приоритет, они перечисляются в одной и той же строке таблицы.

Оператор Описание Ассоциативность
clone
new
Создает копию объекта
Создает новый объект
Отсутствует
** Возведение в степень Справа налево
.
[]
()
Доступ к свойству (точечная нотация)
Индекс массива
Вызов функции
Слева направо
~
++
--
(bool)
(integer)
(float)
(string)
(array)
(object)
@
Битовое НЕ
Оператор инкремента
Оператор декремента
Оператор приведения к типу bool
Оператор приведения к типу integer
Оператор приведения к типу float
Оператор приведения к типу string
Оператор приведения к типу array
Оператор приведения к типу object
Подавление вывода сообщений об ошибках
Справа налево
instanceof Оператор проверки типа Отсутствует
! Логическое НЕ Справа налево
*
/
%
Умножение
Деление
Деление по модулю (остаток от деления 2-х чисел)
Слева направо
+
-
.
Сложение
Вычитание
Конкатенация
Слева направо
<<
>>
Побитовый сдвиг влево
Побитовый сдвиг вправо
Слева направо
<
<=
>
>=
Меньше
Меньше или равно
Больше
Больше или равно
Отсутствует
==
!=
===
!==
<>
Равно
Не равно
Тождественно равно
Тождественно не равно
Не равно (аналог !=)
Отсутствует
& Битовое И Слева направо
^ Битовое ИЛИ-НЕ Слева направо
| Битовое ИЛИ Слева направо
&& Логическое И Слева направо
|| Логическое ИЛИ Слева направо
? : Условный (тернарный) оператор Слева направо
= += -= *= **= /= .= %= &= |= ^= <<= >>= => Операторы присваивания Справа налево
AND Логическое И Слева направо
XOR Логическое ИЛИ-НЕ Слева направо
OR Логическое ИЛИ Слева направо
, Оператор 'запятая' Слева направо

Таблица 3.2. Операторы языка PHP

Большинство операторов, приведенных в таблице, являются бинарными, т.е. используются с двумя операндами. Например, плюс '+', минус '-', не равно '!=' и др. Есть также операторы, которые работают только с одним операндом, их называют унарными. К ним относятся, например, оператор инкремента '++' или оператор отрицания (унарный минус) '-', который применяется для смены знака числа на противоположный. Кроме того, в PHP используется один тернарный оператор, который имеет в своем арсенале целых три операнда. Им является условный оператор '? :'.

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

  1. Что такое выражение? Какие выражения называются простыми? Какие сложными?
  2. Дайте определение оператору и его операндам. Опишите понятие ассоциативности операторов.
  3. На какие виды делятся операторы в зависимости от количества своих операндов?

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

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.
Связаться с автором
Наверх