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Логическое ИЛИ
,Оператор запятая
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | puzinfo@puzzleweb.ru