ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Переменные, операторы и выражения. Часть Одиннадцатая.


28-12-2009

2.6. Построение выражений
При вычислении значения выражения, состоящего из нескольких операторов, синтаксический анализатор PHP оценивает операторы в соответствии с их приоритетом (табл. 2.13). Операторы с более высоким приоритетом вычисляются первыми. Рассмотрим вычисление выражения 2 + 2 * 2. Так как приоритет оператора умножения * более высокий, чем оператора +, сначала вычисляется оператор 2 * 2. После чего PHP складывает 2 и 4 и возвращает результат - 6.
Однако одной приоритетности недостаточно. Рассмотрим выражение 12 / 2 * 3. Оба оператора, присутствующие в этом выражении, деление и умножение, имеют одинаковый приоритет. Однако результат этого выражения будет различаться в зависимости от того, какой из операторов будет выполнен первым, т.е. (12 / 2) * 3 не равно
12 / (2 * 3) .
Поскольку мы ожидаем от PHP следования элементарным правилам арифметики, которые мы знаем еще с начальной школы, очень важно, чтобы неоднозначность, возникающая при выполнении таких операций, разрешалась правильно. Мы ожидаем, что в результате вычисления этого выражения будет получено число 18, так как мы научены выполнять операторы, имеющие равные приоритеты, слева направо. В вычислительной науке это правило называется ассоциативность. Операторы могут быть ассоциативны слева, ассоциативны справа и неассоциативны совсем.
Обычная операция умножения ассоциативна слева. Анализатор PHP оценивает выражение слева направо. Операции присвоения ассоциативны справа. Анализатор PHP вычисляет значение, расположенное в правой части, а потом присваивает его переменной, расположенной в левой части. Выражение, использующее неассоциативный оператор, не может использоваться в качестве операнда другого выражения, использующего неассоциативный оператор. Создание такого выражения приведет к синтаксической ошибке, если для изолирования неассоциативного выражения не воспользоваться скобками.
Так как приоритет и ассоциативность всех операторов PHP запомнить сразу довольно трудно, можно при построении выражений воспользоваться следующими двумя правилами: сложение и вычитание выполнять до умножения и деления либо использовать обыкновенные скобки. Это может показаться забавным, но выполнение таких правил поможет сэкономить вам многие часы отладки.
В табл. 2.13 приводятся данные о приоритетности и ассоциативности операторов PHP.
Переменные, операторы и выражения
Переменные, операторы и выражения
Переменные, операторы и выражения

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Переменные, операторы и выражения. Часть Десятая. PHP. Операторы управления