5.11: Приоритетность и ассоциативность в PHP
Главная Страница » Книги по PHP » Самоучитель PHP 5 для чайников с примерами » Приоритетность и ассоциативность
При использовании операторов нужно обязательно быть знакомым с такими понятиями, как ассоциативность и приоритетность. Иначе можно долго сидеть и думать, почему не получается верный результат вычислений.
На самом деле с этим понятием приоритетности мы сталкивались еще в школе на уроках математики. Например, нужно посчитать значение выражения 1+2*3. Если не обращать на порядок вычисления внимания, то мы сложили бы сначала 1+2=3 и умножили результат на 3. В итоге получили бы 9. Но со школы известно, что сначала следует выполнить операцию умножения, а уж потом сложения. И правильный ответ будет 7. Именно в порядке вычисления различных операций заключается смысл приоритетности.
(!) Приоритетность - свойство, определяющее порядок вычисления различных операций.
Свойство ассоциативности используется в тех случаях, когда требуется выяснить порядок вычисления операций при одинаковых приоритетах (листинг 5.7).
Листинг 5.7. Порядок вычисления.
‹?php
$num = 27/9/3; // эквивалентно (27/9)/3
echo $num; // выведет 1
?›
В данном случае выведется число 1, так как выполнение операторов деления начинается слева. В этом случае говорят, что оператор ассоциативен слева.
(!) Ассоциативность - свойство, определяющее порядок вычисления операций при одинаковых приоритетах.
В таблице 5.1 отражены приоритеты некоторых операторов PHP, а также их ассоциативность.
Таблица 5.5. Приоритеты оператов РНР.
Операторы | Ассоциативность |
++ - | Правая |
/ * % | Левая |
+ - . | Левая |
<< >> | Левая |
< <= => > | Не ассоциативны |
== === ! = | Не ассоциативны |
& | Левая |
^ | Левая |
| | Левая |
&& | Левая |
|| | Левая |
= += -= /= *= %= .= | Правая |
and | Левая |
xor | Левая |
or | Левая |