Использование операций

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

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

Арифметические операции

Арифметические операции — это обычные арифметические действия.

Таблица 1. Арифметические операции РНР

Операция Название Пример
+ Cложение $a + $b
- Вычитание $a - $b
* Умножение $a * $b
/ Деление $a / $b
% Деление по модулю $a % $b

Мы можем сохранить результат любой из этих операций, например:

$result = $a + $b;

Сложение и вычитание имеют традиционный смысл. Результатом их выполнения является, соответственно, сумма и разность значений, хранящихся в переменных $a и $b.

Символ вычитания (-) можно использовать в качестве унарной операции (т.е. операции, которая выполняется над одним аргументом или операндом) для обозначения отрицательных чисел. Например:

$a = -1;

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

Операции деления по модулю возвращают остаток от деления переменной $a на переменную $b.

$a = 42;

$b = 10;

$result = $a%$b;

Значение сохраненное в переменной $result, представляет собой остаток от деления 42 на 10, т.е. 2.

Арифметические операции обычно применяются к целым числам или значениям с двойной точностью. В случае их применения к строкам РНР предпринимает попытку выполнить эти операции, преобразуя строки в числа. Если строка содержит символы "е" и "Е", то она считается числом в экспотенциальной форме записи и преобразуется в числовое значение float. В противном случае строка преобразуется в целочисленное значение. РНР выполняет поиск цифр в начале строки и найденные цифры использует в качестве значения; если в начале строки цифр нет, то ее значение будет ноль.

Строковые операции

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

$a = "Автозапчасти ";

$b = "от компании АВС";

$result = $a.$b;

Теперь переменная $result содержит строку "Автозапчасти от компании АВС".

Операции присваивания

Мы уже знакомы с операцией =, основной операцией присваивания. Этот символ всегда означает операцию присваивания и читается ка "устанавливается равным".

Например:

$totalqty = 0;

Эту строку надо понимать, как "значение переменной $totalqty устанавливается равным нулю".

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

$a + $b

то значением этого выражения будет результат сложения переменных $a и $b. Аналогично можно записать:

$a = 0;

Значением всего приведенного выражения будет нуль.

В конечном итоге появится возможность, выполнять действия, подобные следующему:

$b = 3 + ($a = 2);

В результате значение переменной $b устанавливается равным 5. Это справедливо для всех операторов присваивания: значение всего опрератора присваивания есть значение, присвоенное левому операнду.

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

Помимо простых операций присваивания существует набор комбинированных операций присваивания. Каждая из них представляет собой сокращенную форму записи какой-то другой операции с переменной и присвоения результата этой переменной. Например:

$a += 5;

эквивалентно:

$a = $a + 5;

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

Таблица 2. Комбинированные операции присваивания с результатами действий

Операция Использование Эквивалентная операция
+= $a += $b $a = $a + $b
-= $a -= $b $a = $a - $b
*= $a *= $b $a = $a * $b
/= $a /= $b $a = $a / $b
%/ $a %= $b $a = $a % $b
.= $a .= $b $a = $a . $b

Операции префиксного и суфиксного инкремента (++) и декремента (--) аналогичны операциям += и -=, но с несколькими отличиями.

Все операции инкремента оказывают двойное действие — они увеличивают значение переменной на единицу и присваивают переменной это новое значение.

$a = 5;

echo ++$a;

Во второй строке используется операция префиксного инкремента, получившая название по той причине, что символа ++ предшествуют переменной $a. В результате сначала значение $a увеличивается на 1, после чего оператор echo возвращает новое значение. В рассматриваемом примере $a увеличивается и на экран выводится число 6. Значением этого выражения будет 6.

В тоже время, если символы ++ следуют за переменной $a, значит, используется операция суфиксного инкремента. Она дает другой результат.

$a = 5;

echo $a++;

В данной ситуации действия выполняются в обратном порядке. Т.е., сначала значение $a возвращается и выводится на экран, и только после этого оно увеличивается на 1. Результатом выполнения этих двух строк будет 5. Именно это значение и будет выведено на экран. В тоже время, после выполнения этого оператора переменная $a принимает значение 6.

Операция -- действует аналогично, только в этом случае значение уменьшится на 1.

Операции ссылки, обозначаются как & (амперсанд), может использоваться в сочетании с операцией присваивания. Обычно, когда значение одной переменной присваивается другой переменной, создается копия первой переменной, которая сохраняется где-то в памяти. Например:

$a = 5;

$b = $a;

Приведенные строки кода создают вторую копию значения переменной $a и сохраняют ее в переменной $b. Если впоследствии значение $a подвегнется изменению, значение $b останется преждним.

$a = 7; //значение $b по-прежднему остается равным 5

Создание копии можно избежать, используя операцию ссылки &, например:

$a = 5;

$b = &$a;

$a =7; //теперь оба значения $a и $b равны 7

Ссылки считаются довольно трудными для понимания. Ссылка скорее подобна псевдониму, нежели указателю. И $a и $b указывают на один и тот же участок памяти. Это можно изменить, сбросив одну из переменных, например:

unset ($a);

Сброс не изменяет значения переменной $b (равное 7), но разрывает связь между переменной $a и значением 7, хранящимся в памяти.

назадвверхвперед
Rambler's Top100