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.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Переменные, операторы и выражения. Часть Одиннадцатая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Переменные, операторы и выражения. Часть Десятая. | PHP. Операторы управления |