PHP Операторы


В этой главе мы обсудим применение различных операторов в PHP.

В PHP оператор присваивания=используется для присваивания значений переменным.

В PHP арифметические операторы+используются для сложения значений.


Арифметические операторы в PHP

Operator Name Описание Пример Результат
x + y добавьте Сумма x и y 2 + 2 4
x - y вычитание Разность x и y 5 - 2 3
x * y multiply Произведение x и y 5 * 2 10
x / y divide Частное x и y 15 / 5 3
x % y Модуль (остаток от деления) Остаток от деления x на y 5 % 2
10 % 8
10 % 2
1
2
0
-x Сделать отрицательным Взять противоположное по знаку значение x
<?php
$x = 2;
echo -$x;
?>
-2
~x Побитовое НЕ

Инвертировать x, выполняя побитовую операцию НЕ над его двоичными битами. Правила таковы:

~1=-2;   
~0=-1;
<?php
$x = 2;
echo ~$x;
?>
-3
a . b Конкатенация Объединяет две строки "Hi" . "Ha" HiHa

Следующие примеры демонстрируют различные результаты, полученные при использовании разных арифметических операторов:

Пример

<?php $x=10; $y=6; echo ($x + $y); //Выводит 16 echo '<br>'; //Новая строка echo ($x - $y); //Выводит 4 echo '<br>'; //Новая строка echo ($x * $y); //Выводит 60 echo '<br>'; //Новая строка echo ($x / $y); //Выводит 1.6666666666667 echo '<br>'; //Новая строка echo ($x % $y); //Выводит 4 echo '<br>'; //Новая строка echo -$x; ?>

Попробуйте сами »

В версии PHP7+ добавлен оператор целочисленного деленияintdiv(), эта функция возвращает значение первого параметра, делённое на второй параметр, и округляет его вниз (floor). Пример:

Пример

<?php var_dump(intdiv(10, 3)); ?>

Приведённый выше пример выведет:

int(3)

Операторы присваивания в PHP

В PHP основной оператор присваивания — это=. Это означает, что левому операнду присваивается значение выражения в правой части. То есть,$x = 5значение равно 5.

Operator Эквивалентно Описание
x = y x = y Левому операнду присваивается значение выражения в правой части
x += y x = x + y добавьте
x -= y x = x - y вычитание
x *= y x = x * y multiply
x /= y x = x / y divide
x %= y x = x % y Модуль (остаток от деления)
a .= b a = a . b Объединяет две строки

Следующие примеры демонстрируют различные результаты, полученные при использовании разных операторов присваивания:

Пример

<?php $x=10; echo $x; //Выводит 10 $y=20; $y += 100; echo $y; //Выводит 120 $z=50; $z -= 25; echo $z; //Выводит 25 $i=5; $i *= 6; echo $i; //Выводит 30 $j=10; $j /= 5; echo $j; //Выводит 2 $k=15; $k %= 4; echo $k; //Выводит 3 ?>

Попробуйте сами »

Следующие примеры демонстрируют одинаковые результаты, полученные с использованием разных строковых операторов:

Пример

<?php $a = "Hello"; $b = $a . " world!"; echo $b; //Выводит Hello world! $x="Hello"; $x .= " world!"; echo $x; //Выводит Hello world! ?>

Попробуйте сами »

Операторы инкремента/декремента PHP

Operator Name Описание
++ x Пре-инкремент Добавляет 1 к x, затем возвращает x
x ++ Пост-инкремент Возвращает x, затем добавляет 1 к x
-- x Пре-декремент Вычитает 1 из x, затем возвращает x
x -- Пост-декремент Возвращает x, затем вычитает 1 из x

Следующие примеры демонстрируют результаты, полученные с использованием операторов инкремента/декремента:

Пример

<?php $x=10; echo ++$x; //Выводит 11 $y=10; echo $y++; //Выводит 10 $z=5; echo --$z; //Выводит 4 $i=5; echo $i--; //Выводит 5 ?>

Попробуйте сами »

Операторы сравнения PHP

Операторы сравнения позволяют сравнивать два значения:

Operator Name Описание Пример
x == y Equal Возвращает true, если x равно y 5==8 возвращает false
x === y Идентичны Возвращает true, если x равен y и они одного типа 5==="5" возвращает false
x != y Не равно Возвращает true, если x не равен y 5!=8 возвращает true
x <> y Не равно Возвращает true, если x не равен y 5<>8 возвращает true
x !== y Не идентичны Возвращает true, если x не равен y или если они не одного типа 5!=="5" возвращает true
x > y Больше Возвращает true, если x больше y 5>8 возвращает false
x < y Меньше Возвращает true, если x меньше y 5<8 возвращает true
x >= y Больше или равно Возвращает true, если x больше или равен y 5>=8 возвращает false
x <= y Меньше или равно Возвращает true, если x меньше или равен y 5<=8 возвращает true

Следующие примеры демонстрируют различные результаты, полученные с помощью некоторых операторов сравнения:

Пример

<?php $x=100; $y="100"; var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>"; $a=50; $b=90; var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?>

Попробуйте сами »

Логические операторы PHP

Operator Name Описание Пример
x and y и Возвращает true, если оба x и y истинны x=6
y=3
(x < 10 and y > 1) возвращает true
x or y или Возвращает true, если хотя бы один из x и y равен true x=6
y=3
(x==6 or y==5) возвращает true
x xor y Xor Возвращает true, если ровно один из x и y равен true x=6
y=3
(x==6 xor y==3) возвращает false
x && y и Возвращает true, если оба x и y истинны x=6
y=3
(x < 10 && y > 1) возвращает true
x || y или Возвращает true, если хотя бы один из x и y равен true x=6
y=3
(x==5 || y==5) возвращает false
! x not Возвращает true, если x не равен true x=6
y=3
!(x==y) возвращает true

Операторы массивов PHP

Operator Name Описание
x + y Объединение Объединение x и y
x == y Равенство Возвращает true, если x и y имеют одинаковые пары ключ/значение
x === y Идентичность Возвращает true, если x и y имеют одинаковые пары ключ/значение, в том же порядке и того же типа
x != y Неравенство Возвращает true, если x не равен y
x <> y Неравенство Возвращает true, если x не равен y
x !== y Неидентичность Возвращает true, если x не равен y

Следующие примеры демонстрируют различные результаты, полученные при использовании некоторых операторов массивов:

Пример

<?php $x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; //Объединение массивов $x и $y var_dump($z); var_dump($x == $y); var_dump($x === $y); var_dump($x != $y); var_dump($x <> $y); var_dump($x !== $y); ?>

Попробуйте сами »

Тернарный оператор

Другой условный оператор — это "?:" (или тернарный) оператор.

Формат синтаксиса

(expr1) ? (expr2) : (expr3) 

Значение равно expr2, когда expr1 вычисляется как TRUE, и expr3, когда expr1 вычисляется как FALSE.

Начиная с PHP 5.3, среднюю часть тернарного оператора можно опустить. Выражение expr1 ?: expr3 возвращает expr1, если expr1 вычисляется как TRUE, в противном случае возвращает expr3.

Пример

В следующем примере, проверяя, содержит ли запрос $_GET значение user, он возвращает $_GET['user'], если оно присутствует, в противном случае возвращает nobody:

Пример

<?php //Обычный синтаксис $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; echo $username, PHP_EOL; //синтаксис версии PHP 5.3+ $username = $_GET['user'] ?: 'nobody'; echo $username, PHP_EOL; ?>

Примечание:PHP_EOL— это символ новой строки, совместимый с большим числом платформ.

В версиях PHP 7+ есть дополнительный оператор объединения с NULL??, примеры приведены ниже:

Пример

<?php //Если $_GET['user'] не существует, вернуть 'nobody', иначе вернуть значение $_GET['user'] $username = $_GET['user'] ?? 'nobody'; //Похожий тернарный оператор $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>

Комбинированный оператор сравнения (PHP7+)

PHP7+ поддерживает комбинированный оператор сравнения, также называемый оператором «космический корабль», с символом:<=>. Комбинированный оператор сравнения позволяет легко сравнивать две переменные и, конечно, не ограничивается сравнением числовых данных.

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

$c = $a <=> $b;

Разбор следующий:

  • Если $a > $b, то$cзначение1。
  • Если$a == $b, то$cзначение0。
  • Если$a < $b, то$cзначение-1。

Примеры приведены ниже:

Пример

<?php //Целое число echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 //Число с плавающей точкой echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 //Строка echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>

Приоритет операторов

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

Объяснение: Левая = слева направо, правая = справа налево.

Ассоциативность Operator Дополнительная информация
Отсутствует clone new clone и new
По левому краю [ array()
Вправо ++ -- ~ (int) (float) (string) (array) (object) (bool) @ Тип и инкремент/декремент
Отсутствует instanceof Type
Вправо ! Логические операторы
По левому краю * / % Арифметические операторы
По левому краю + – . Арифметические операторы и строковые операторы
По левому краю << >> Побитовые операторы
Отсутствует == != === !== <> Операторы сравнения
По левому краю & Побитовые операторы и ссылки
По левому краю ^ Побитовые операторы
По левому краю | Побитовые операторы
По левому краю && Логические операторы
По левому краю || Логические операторы
По левому краю ? : Тернарный оператор
Вправо = += -= *= /= .= %= &= |= ^= <<= >>= => Операторы присваивания
По левому краю и Логические операторы
По левому краю xor Логические операторы
По левому краю или Логические операторы
По левому краю , Используется в нескольких местах

Что касается приоритета операторов, то or и ||, && и and — все логические операторы с одинаковым действием, но их приоритет различается.

Пример

<?php //Приоритет: && > = > and //Приоритет: || > = > or $a = 3; $b = false; $c = $a or $b; var_dump($c); //Здесь $c — это значение типа int, равное 3, а не булево значение true. $d = $a || $b; var_dump($d); //Здесь $d — это булево значение true. ?>

Вывод приведённых выше примеров:

int(3)
bool(true)

Использование круглых скобок

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

Пример

<?php //Круглые скобки имеют приоритет в операциях $a = 1; $b = 2; $c = 3; $d = $a + $b * $c; echo $d; echo "\n"; $e = ($a + $b) * $c; //Использование круглых скобок echo $e; echo "\n"; ?>

Вывод приведённых выше примеров:

7
9
Другие расширения