ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб сайтов под "ключ".

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

Приоритет и ассоциативность: вычисление выражений

Приоритет и ассоциативность

В общем случае операции обладают приоритетами, или порядком их вычисления.

Кроме того, одной из характеристик операции является ее ассоциативность, определяющая порядок выполнения операций с одинаковыми приоритетами. Операции могут выполняться слева направо, справа налево, либо порядок их выполнения не имеет значения.

Приоритеты и ассоциативность операций в РНР представлены в таблице 7.

В верхней части таблицы указаны операции с наименьшим приоритетом, по мере продвижения сверху вниз приоритеты операций возрастают.

Таблица 7. Приоритеты операций в РНР
Ассоциативность Операции
слева направо `
слева направо or
слева направо xor
слева направо and
справа налево print
слева направо =  +=  -=  *=  /=  .=  %=  &=  |=  ^=  ~=  <<=  >>=
слева направо ? :
слева направо | |
слева направо &&
слева направо |
слева направо ^
слева направо &
неприемлема ==  !=  ===  !==
неприемлема <  <=  >  >=
слева направо <<  >>
слева направо +  - .
слева направо *  /  %
справа налево !  ~  ++  --  (int)  (float)  (string)  (array)  (object)  @
справа налево [ ]
неприемлема new
неприемлема ( )

Обратите внимание, что наивысшим приоритетом обладает операция, которую мы еще не рассматривали: хорошо знакомые круглые скобки. Они повышают приоритеты любых заключенных в них операций. Именно с их помощью при необходимости можно изменить порядок выполнения операций, определенный их приоритетами.

Вспомним фрагмент из последнего примера:

$totalamount = $totalamount * (1 + $ndc);

Если записать следующим образом:

$totalamount = $totalamount * 1 + $ndc;

то операция умножения, имеющая более высокий приоритет по сравнению с операцией сложения, выполнялась бы первой, что привело бы к неверному результату. С помощью круглых скобок можно добиться, чтобы сначала выполнялось подвыражение 1 + $ndc.

В выражении можно использовать любой набор пар круглых скобок. При этом первым будет вычисляться выражение, заключенное в самые внутренние скобки.

Также следует отметить еще одну операцию, присутствующую в таблице, которая еще не рассматривалась: языковую конструкцию print, представляющая собой эквивалент echo. Обе конструкции генерируют вывод в окно веб-браузера.

В основном мы будем использовать в наших примерах конструкцию echo, тем не менее можно применять и print, если кому-то эта конструкция кажется более читабельной. Реально ни print, ни echo не являются функциями, однако обе они вызываются подобно функциям, с передачей им параметров в круглых скобках. Обе конструкции можно также рассматривать как операции — вы просто помещаете необходимую строку после ключевого слова print или echo.

Вызов print как функции приводит к возврату ею значения (1). Данная возможность может оказаться полезной, если необходимо генерировать вывод внутри более сложного выражения, тем не менее, учитывайте, что print существенно медленнее echo.

Комментарии(0)

Для добавления комментариев надо войти в систему и авторизоваться
Комментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться