PHP: Выражения и операторы
- Выражения
- Операторы
- Количество операндов
- Типы операндов
- Приоритет
- Ассоциативность
- Таблица операторов
Выражения
Выражение — это любая единица исходного кода программы, которая может быть вычислена для получения значения, например, вызов функции, использование операторов, или просто обращение к переменной по имени. В PHP почти всё является выражением.
Выражения делятся на простые (их также называют первичными) и сложные. Первичные выражения являются самостоятельными выражениями — они не включают в себя ещё более простых выражений. Например, к первичным выражениям относятся: идентификаторы, литералы и оператор группировки. Сложные выражения состоят из простых выражений. Типичный способ конструирования сложных выражений из простых выражений заключается в использовании операторов:
// Примеры первичных выражений 11 // Числовой литерал $str // Возвращает значение переменной [] // Литерал массива () // Оператора группировки // Примеры сложных выражений $alpha + 19 // Возвращает результат арифметической операции ($alpha - 37) * $beta / 2 // Возвращает результат арифметических операций foo() // Возвращает результат вызова функции $mass[1] // Возвращает значение элемента массива
Некоторые выражения, так же как и инструкции, оканчиваются точкой с запятой, например:
$a = 5;
Таким образом, разница между выражением и инструкцией заключается в том, что любое выражение - это то, что вычисляется для получения значения, а инструкция - это просто указание на совершение какого-либо действия.
Операторы
Оператор - это элемент программного кода, который описывает то или иное действие в выражении. В PHP оператор представляет собой символ, благодаря которому могут производиться различные виды вычислений, сравнений или присваиваний с участием одного или нескольких значений. Разные операторы отличаются типом и количеством операндов. В PHP используется несколько типов операторов: арифметические, присваивания, сравнения, логические и поразрядные (побитовые). Значения, расположенные по сторонам операторов, называются операндами:
3 + 4
Числовые литералы по обе стороны от оператора +
являются его операндами. Операнд - это то, на что воздействует оператор. Операнды и операторы дают в результате выражение, которое формирует новое значение.
Из всего вышесказанного можно сделать вывод, что выражением называются два или больше подвыражений, объединенных операторами. Чем больше у вас подвыражений и операторов, тем длиннее и сложнее выражение.
При работе с операторами особое значение имеют следующие аспекты:
- количество операндов
- тип операндов
- приоритет (порядок исполнения)
- ассоциативность операторов
Количество операндов
Разные операторы принимают разное количество операндов. Операторы, которые работают с двумя операндами называются бинарными, к таким операторам относятся сложение, вычитание умножение и т.д.
Другие операторы могут принимать всего один операнд, они называются унарными. Примерами унарного оператора могут служить унарный минус (-), инкремент, декремент и т.д.
Существует также один оператор, который может работать с тремя операндами, такой оператор называется тернарный. Этим оператором является оператор, представляющий собой сокращенную форму записи условного оператора if, о котором мы поговорим позже, когда будем рассматривать условные операторы.
Типы операндов
Создавая выражения, необходимо обращать внимание на типы операндов, с которыми работает каждый из операторов, потому что каждый оператор ожидает получить операнды конкретного типа данных. Например, нельзя выполнить умножение двух строк
'a' * 'b'
Однако PHP старается максимально облегчить вам жизнь, автоматически выполняя необходимые преобразования типов операндов для конкретных операторов. Следующее выражение вполне допустимо:
'10' * '10'
В этом выражении интерпретатор PHP автоматически преобразует строки в числа и перемножает их. Но иногда такое автоматическое преобразование невозможно, поэтому будьте внимательны и следите за используемыми типами операндов.
Примечание: Когда PHP выполняет автоматическое преобразование типа, это называется неявным приведением типа, если преобразование типа выполняется вручную - это называется явным приведением типа.
Приоритет
Приоритет оператора определяет порядок исполнения операций при вычислении значения выражения.
Операторы с одинаковым приоритетом обрабатываются в порядке следования в выражении. Например, операции умножения и деления исполняются в том порядке, в котором следуют в выражении, потому что они имеют одинаковый приоритет.
Если выражение содержит операторы с разным приоритетом, то порядок их исполнения может влиять на конечный результат выражения. С помощью круглых скобок ( и ) можно переопределить порядок исполнения операторов или просто улучшить читаемость выражения.
<?php echo 3 * 2 + 5; // выведет 11 echo 3 * (2 + 5); // выведет 21 ?>
Во втором выражении умножение будет выполняться после сложения, потому что порядок исполнения операторов был переопределен с помощью круглых скобок.
Ассоциативность
Все операторы обрабатывают свои операнды в определенном направлении. Направление обработки называется ассоциативностью и зависит от типа оператора. Большинство операторов выполняет обработку слева направо - такой порядок называется левой ассоциативностью. Левая ассоциативность подразумевает, что выражение вычисляется слева направо, правая ассоциативность - в обратном направлении.
Таблица операторов
В PHP есть несколько уровней приоритетов, в таблице приведен перечень операторов, отсортированных по уровню приоритета, от высшего к низшему. Операторы на одном уровне имеют одинаковый приоритет.
В колонке "Ассоциативность" помечены операторы, которые имеют правую ассоциативность, остальные относятся к левой.
Оператор | Описание | Ассоциативность |
---|---|---|
NEW | Создает новый объект | Справа налево |
. [] () | Доступ к свойству (точечная нотация) Индекс массива Вызов функции | |
! ~ ++, -- +, - (int) (float/double/real) (string) (array) (object) @ |
Логическое НЕ Битовое НЕ Операторы инкремента и декремента Унарный плюс и минус Оператор приведения типа Оператор приведения типа Оператор приведения типа Оператор приведения типа Оператор приведения типа Подавление вывода сообщений об ошибках |
Справа налево |
*, /, % | Умножение, деление | |
+, - . | Сложение, вычитание Конкатенация | |
<<, >> | Битовый сдвиг | |
<, <=, >, >= | Операторы сравнения | |
==, != ===, !==, <> | Операторы сравнения | |
& | Битовое И | |
ˆ | Битовое ИЛИ-НЕ | |
| | Битовое ИЛИ | |
&& | Логическое И | |
|| | Логическое ИЛИ | |
? : | Условный (тернарный) оператор | |
=, +=, -=, *=, /=, .=, %=, &=, |=, ^=, <<=, >>=, => | Операторы присваивания | Справа налево |
AND | Логическое И | |
XOR | Логическое ИЛИ-НЕ | |
OR | Логическое ИЛИ | |
, | Оператор запятая |
С этой темой смотрят: