7.8 KiB
7.8 KiB
title | localeTitle |
---|---|
PHP Operators | Операторы PHP |
Операторы PHP
Приоритет оператора
Операторы в PHP, как и в математике, имеют свои приоритеты в выражениях.
Например:
Выражение "2 + 5 * 2" вычисляется как "12", а не "14", поскольку оператор умножения ("*") имеет более высокий приоритет, чем оператор сложения ("+").
Круглые скобки могут использоваться для принудительного указания порядка выполнения операторов.
Например:
Выражение "(2 + 3) * 4" вычисляется как "20".
Если операторы имеют равный приоритет, то будут ли они выполняться справа налево или слева направо определяется их ассоциативностью.
Например:
"-" является лево-ассоциативным оператором. Следовательно "3 - 5 - 7" сгруппируется как "(3 - 5) - 7" и пересчитается в "-9".
С другой стороны "=" - это право-ассоциативный оператор, так что "$a = $b = $c" сгруппируется как "$a = ($b = $c)".
Неассоциативные операторы с одинаковым приоритетом не могут использоваться совместно.
Например:
"1 < 2 > 1" не будет работать в PHP. Выражение "1 <= 1 == 1", с другой стороны, будет, поскольку "==" имеет более низкий приоритет чем "<=".
Арифметические операторы
Арифметические операторы в PHP работают идентично арифметическим выражениям в математике.
Ниже указан список арифметических операторов PHP.
Идентичность
Конвертация $a в int или float, что более подходит.
+$a
Отрицание
Смена знака $a.
-$a
Сложение
Сумма $a и $b.
<?php
echo (4 + 2)."\n"; // выводит 6
?>
Вычитание
Разность $a и $b.
<?php
echo (4 - 2)."\n"; // выводит 2
?>
Умножение
Произведение $a и $b.
<?php
echo (4 * 2)."\n"; // выводит 8
?>
Деление
Частное от деления $a на $b.
<?php
echo (4 / 2)."\n"; // выводит 2
?>
Деление по модулю
Целочисленный остаток от деления $a на $b.
<?php
echo (5 % 2)."\n"; // выводит 1
?>
Возведение в степень
Возведение $a в степень $b. Добавлено в PHP 5.6.
<?php
echo (4 ** 2)."\n"; // выводит 16
?>
Оператор присваивания
Базовый оператор присваивания обозначается символом "=".
Оператор присваивания означает, что левый операнд получает значение правого выражения.
Результатом выполнения оператора присваивания является само присвоенное значение:
<?php
$a = 3;
echo $a; // выводит 3
?>
<?php
$a = ($b = 3) + 4; // $a теперь равно 7, а $b было присвоено 3.
?>
Строковые операторы
В PHP есть два оператора для работы со строками (string):
Первый - оператор конкатенации ('.'), который возвращает строку, представляющую собой соединение левого и правого аргумента.
Второй - оператор присваивания с конкатенацией ('.='), который присоединяет правый аргумент к левому.
<?php
$a = "Привет, ";
$b = $a . "Мир!"; // $b теперь содержит строку "Привет, Мир!"
$a = "Привет, ";
$a .= "Мир!"; // $a теперь содержит строку "Привет, Мир!"
?>
Логические операторы
Логические операторы позволяют сравнивать результаты работы двух операндов (значения или выражения) с целью определения факта
возвращения одним из них или обоими значения true или false.
Оператор "И"
TRUE, если и $a, и $b TRUE.
$a and $b;
$a && $b
Оператор "ИЛИ"
TRUE, если или $a, или $b TRUE.
$a or $b;
$a || $b
Оператор "Исключающее ИЛИ"
TRUE, если $a, или $b TRUE, но не оба.
$a xor $b
Оператор "Отрицание"
TRUE, если $a не TRUE.
! $a
Операторы сравнения
Данные операторы позволяют сравнивать между собой два значения.
Равно
TRUE если $a равно $b после преобразования типов.
$a == $b
Тождественно равно
TRUE если $a равно $b и имеет тот же тип.
$a === $b
Не равно
TRUE если $a не равно $b после преобразования типов.
$a != $b
или
$a <> $b
Тождественно не равно
TRUE если $a не равно $b, или они разных типов.
$a !== $b
Меньше
TRUE если $a строго меньше $b.
$a < $b
Больше
TRUE если $a строго больше $b.
$a > $b
Меньше или равно
TRUE если $a меньше или равно $b.
$a <= $b
Больше или равно
TRUE если $a больше или равно $b.
$a >= $b
Космический корабль
Число типа integer меньше, больше или равное нулю, когда $a соответственно меньше, больше или равно $b.
*Доступно c PHP 7.
$a <=> $b
Операторы инкремента и декремента
В PHP есть поддержка префиксных и постфиксных операторов инкремента и декремента в стиле языка C.
*Операторы инкремента и декремента не влияют на значение boolean.
Декремент NULL также не даст никакого эффекта, однако инкремент даст значение 1.
Префиксный инкремент
Увеличивает $a на единицу, затем возвращает значение $a.
++$a
Постфиксный инкремент
Возвращает значение $a, затем увеличивает $a на единицу.
$a++
Префиксный декремент
Уменьшает $a на единицу, затем возвращает значение $a.
--$a
Постфиксный декремент
Возвращает значение $a, затем уменьшает $a на единицу.
$a-- .