Выражения, операторы и управляющие конструкции
Печать: Шрифт: Абв Абв Абв
danilov 26 Февраля 2006 в 20:33:03
Выражения, операторы и управляющие конструкции

В этой главе представлены некоторые аспекты, играющие исключительно важную роль в любом языке программирования, — а именно, выражения, операторы и управляющие конструкции. Этот материал необходим в первую очередь при создании больших и сложных приложений РНР. Если вы уже знакомы с такими языками, как С и Java, эта глава всего лишь напомнит известные вам понятия. Если же вы впервые встречаетесь с этими терминами и понятиями, которые они обозначают, знание материала этой главы будет безусловно необходимо для понимания остальных глав книги.

Выражения

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

Операнды

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

<?
++; // $а - операнд
$sum = $val1 + $val2; // $sum. $val1 и $val2 - операнды
?>


Операторы

Оператор представляет собой символическое обозначение некоторого действия, выполняемого с операндами в выражении. Многие операторы известны любому программисту, но вы должны помнить, что РНР выполняет автоматическое преобразование типов на основании типа оператора, объединяющего два операнда, — в других языках программирования это происходит не всегда.

Приоритет и ассоциативность операторов являются важными характеристиками языка программирования (см. раздел «Ассоциативность операторов» этой главы). В табл. 3.1 приведен полный список всех операторов, упорядоченных по убыванию приоритета. Приоритет, ассоциативность и сами операторы подробно рассматриваются в разделах, следующих за таблицей.
Таблица 3.1. Операторы РНР

ОператорАссоциативность Цель
( )-Изменение приоритета
new-Создание экземпляров объектов
! ~ПЛогическое отрицание, поразрядное отрицание
++ --ПИнкремент, декремент
@ПМаскировка ошибок
/ * %ЛДеление, умножение, остаток
+ - .ЛСложение, вычитание, конкатенация
<<  >>ЛСдвиг влево, сдвиг вправо (поразрядный)
< <=  >  >=-Меньше, меньше или равно, больше, больше или равно
== !=  ===  <>-Равно, не равно, идентично, не равно
&  ^  |ЛПоразрядные операции AND, XOR и OR
&& ||ЛЛогические операции AND и OR
?:ПТернарный оператор
=  +=  *=  /=  .=ПОператоры присваивания
%=  &=  |=  ^=  
<<=  >>=  
AND XOR ORЛЛогические операции AND, XOR и OR


После знакомства с концепциями операторов и операндов следующие примеры выражений выглядят значительно понятнее:

<?
= 5; // Присвоить целое число 5 переменной $а
= "5": // Присвоить строковую величину "5" переменной $а
$sum = 50 + $some_int; // Присвоить сумму 50 + $some_int переменной $sum
Swine = "Zinfandel"; // Присвоить строку "Zinfandel" переменной $wine
$inventory++: // Увеличить значение $inventory на 1
?>
Объединяя операторы и операнды, вы получите более сложные выражения для выполнения нетривиальных вычислений. Пример:

<?$total_cost = $cqst + (Scost * 0.06): // прибавить к цене 6-процентный налог ?>


Ассоциативность операторов

Ассоциативность оператора определяет последовательность выполнения операторов с одинаковым приоритетом (см. табл. 3.1). Выполнение может происходить в двух направлениях: либо слева направо, либо справа налево. При ассоциативности первого типа операции, входящие в выражение, выполняются слева направо. Например, команда

<? $value = 3*4*5*7*2;?>


эквивалентна следующей команде:

<? $value = ((((3 * 4) * 5) * 7) * 2);?>


Результат вычислений равен 840. Это объясняется тем, что оператор умножения (*) обладает левосторонней ассоциативностью. Операторы с правосторонней ассоциативностью и одинаковым приоритетом обрабатываются справа налево. Например, фрагмент

$с = 5;
$value = $а - $b - $с;


эквивалентен фрагменту

$c = 5;
$value = ($а - ($b - $с));


При обработке этого выражения переменным $value, $a, $b и $с будет присвоено значение 5. Это объясняется тем, что оператор присваивания (=) обладает правосторонней ассоциативностью.
Добавить сообщение
Чтобы добавлять комментарии зарeгиcтрирyйтeсь