Арифметические операторы
Рассмотрим вопрос об арифметических операторах. Для этого определимся, что означает оператор. Оператор — это то, что выполняет некоторое действие по отношению операндам. Все вместе это дает операцию. В зависимости от количества операндов, операторы бывают унарные (один операнд) и бинарные (два операнда).
В этом уроке мы рассмотрим арифметические операторы — бинарные и унарные. Арифметические операторы — это операторы для работы с числовыми типами данных — целыми и числами с плавающей точкой.
К бинарным арифметическим операторам относят следующие:
оператор сложения: +
оператор вычитания: —
оператор умножения: *
оператор деления: /
оператор остатка от деления: %
Все перечисленные операторы действуют так же, как нас учили в школе 🙂 Напомним, что означает остаток от деления. Это число, которое остается в самом низу при делении в столбик:
Иными словами, это разница между делимым и максимальным целым числом (не больше делимого), которое нацело делиться на делитель. Как правило этот оператор используют для определения, делится ли одно число на другое. Если это так, то результатом будет ноль.
$a = 25 % 5; // 0; $b = 13 % 2; // 1 $c = 20 % 2; //0
К унарным арифметически операторам относят оператор изменения знака на противоположный: — (знак минус).
Ниже рассмотрены несколько несложных примеров. В них переменным присваивается арифметическое выражение — это комбинация значений и/или переменных и операторов.
$a = 2 + 2; $b = - $a; $c = $a * $b; $d = 2 - 3 + $a + $b;
Приоритет арифметических операторов. Приоритет определяет то, в каком порядке будут работать операторы, которые записаны в одном выражении. Выпишем арифметические операторы по убыванию приоритета.
* , / , % имеют одинаковый приоритет и выполняются поочередно слева направо, если записаны в одном выражении
+, — имеют одинаковый приоритет и выполняются поочередно слева направо, если записаны в одном выражении
Для определения нужной последовательности работы операторов необходимо группировать отдельные составные части выражения круглыми скобками ( ).
$h = (2 + 2) * 2; // 8
Практическая часть
<?php $a = 2 + 2; // boy, we have 4! Binary + was used $b = - $a; // we have -4 in $b. Unary - was used $c = $a * $b; // we have -16 $d = 2 - 3 + $a + $b; // we have -1 $e = 17 % 2; // we have 1 and 17 is odd echo $f = 16 % 2; // we have 0 and 16 is even echo '<br>'; $g = 2 + 2 * 2; // 6 echo $h = (2 + 2) * 2; // 8 ?>
Операторы инкремента и декремента
Операторы инкремента и декремента — это операторы, которые работают фактически на основе арифметических. Они используются для увеличения или уменьшения значений переменных. Рассмотрим эти операторы:
++ увеличивает значение переменной на 1
— уменьшает значение переменной на 1
Эти операторы можно записывать или справа от переменной или слева от переменной. Разница будет лишь в очередности исполнения операторов.
$a = 1; echo $a++; // output: 1, and then $a increased echo $a; // output 2; echo ++$a; // output: 3
Остальные операторы декремента и инкремента сопряжены с действием присвоения:
$x += A — увеличение значения переменной $x на A
$x -= A — уменьшение значения переменной $x на A
$x *= A — увеличение значения переменной $x в A раз
$x /= A — уменьшение значения переменной $x в A раз
<?php $a = 1; $a++; // 2 echo $a . '<br>'; $a--; // 1 echo $a++; // first output, then increase echo '<br>'; echo $a . '<br>'; echo ++$a; // first increase, then output $a = 10; $a += 21; // same as $a = $a + 21 $a -= 15; // same as $a = $a - 15; $a = 5; $a *= 2; // same as $a = $a * 2 $a /= 2; // same as $a = $a / 2; ?>
Строковые операторы
Рассмотрим два строковых оператора:
оператор конкатенации . (точка)
оператор конкатенации и присваивания .=
Конкатенация — это склеивание двух строк, которые указываются слева и справа от оператора.
$x = 'hello' . ' world'; // hello world
Конкатенация и присваивание — это «приклеивание» строки справа от оператора к значению переменной слева от оператора.
$x = 'hello'; $x .= 'world'; // hello world
<?php $a = 'Hello '; $b = 'world'; $c = $a . $b; // we got 'Hello world' in $c // $c = 'Hello world, I am student' echo $c .= ', I am student!'; ?>
Логические операторы
К логическим операторам относят операторы, которые применяются для значений логического типа данных. Рассмотрим эти операторы, выписав их по убыванию приоритета:
логическое отрицание: !
логическое умножение (конъюнкция , логическое И): &&
строгое логическое сложение (строгая дизъюнкция): xor
логическое сложение (дизъюнкция, логическое ИЛИ): ||
Для лучшего понимания будем ассоциировать false с 0, а true с любым ненулевым целым числом.
Логическое отрицание — это унарный оператор, который записывается перед переменной или значением булевского типа данных и возвращает противоположное значение, т.е. !true это false, а !false это true.
Логическое умножение — это бинарный оператор, который возвращает true, только если оба значения, к которым он применен, равны true. Для лучшего понимания, можно ассоциировать эту операцию с обычным умножением. Тогда
$a = true && false; // 1 * 0 = 0 (false) $a = false && true; // 0 * 1 = 0 (false) $a = false && false; // 0 * 0 = 0 (false) $a = true && true; // 1 * 1 = 1 (true)
Логическое сложение — это бинарный оператор, который возвращает false
, только если оба значения, к которым он применен, равны false
. Для лучшего понимания, можно ассоциировать эту операцию с обычным сложением. Тогда
$a = true || false; // 1 + 0 = 1 (true) $a = false || true; // 0 + 1 = 1 (true) $a = false || false; // 0 + 0 = 0 (false) $a = true || true; // 1 + 1 = 2 (true)
Тут все значения, которые не 0
, ассоциируются с true
.
Строгое логическое сложение — это бинарный оператор, который возвращает true
, только примененный к разным значениям. Для лучшего понимания, можно ассоциировать эту операцию с взятием остатка от деления сумы значений на 2
.
$a = true xor false; // (1 + 0) % 2 = 1 (true) $a = false xor true; // (0 + 1) % 2 = 1 (true) $a = true xor true; // (1 + 1) % 2 = 0 (false) $a = false xor false; // (0 + 0) % 2 = 0 (false)
Операторы присвоения
Оператор присвоения =
служит для присваивания значения переменной. При этом переменная записывается слева от оператора. Перед присвоением значение справа от оператора вычисляется. Присваивать можно не только конкретные значения, но и другие переменные, константы.
$a = 2 + 2; // 4 $a = $a + $a; // 4 + 4 = 8
Также в выражении можно использовать этот оператор несколько раз подряд, присваивая тем самым одно значение нескольким переменным.
$a = $b = 4;
Операция присвоения сама по себе возвращает значение, которое было присвоено. Это значит, что операцию присвоения можно записывать, например, после echo
:
echo $a = 4; // output: 4
Операторы массивов
Данные операторы помогают сравнивать значение слева со значением справа от них. Это может быть:
==
— тождественность (значения совпадают)===
— строгая тождественность (значения и типы совпадают)!=
— не тождественность (значения не совпадают)!==
— строгая не тождественность (не совпадают либо значения, либо типы)>, >=
— больше, больше ил равно<, <=
— меньше, меньше или равно
Выражения с использованием таких операторов всегда возвращают булево значение (true
или false
).
При использовании оператора ==
осуществляется приведение типов, если операнды принадлежат к разным типам данных.При использовании оператора ===
приведение типов не осуществляется. В примере ниже рассмотрены применения этих операторов.
$a = 3 == '3'; // $a is true $b = 3 === '3'; // $b is false
Как видим, в 1-м выражении мы получили true
, потому что в результате неявного приведения типов, значения этих переменных стали равны. Во 2-м выражении мы использовали другой оператор и, тем самым, сравнили, вдобавок, их типы, поэтому получили результат false
.
Добавив вместо одного знака = знак ! мы можем проверить операнды на НЕ равенство.
$a = 3 != '3'; // $a is false $b = '' !== null; // $b is true
Также мы упоминали об операторах больше [или равно] и меньше [или равно]. Они действуют таким же образом. При этом, сравнения типов тут не предусмотрено.
Приоритет операторов
инкремент, декремент: ++, --
отрицание: !
арифметические операторы: *, /, %
арифметические операторы: +, -
операторы сравнения: <, <=, >, >=
операторы сравнения: ==, !=, ===, !==
логический оператор: &&
логический оператор: ||
логический оператор: xor
Таблица лучших: 4. Операторы PHP
Место | Имя | Записано | Баллы | Результат |
---|---|---|---|---|
Таблица загружается |