Операции в PHP
Добавить в избранноеВ PHP мы можем использовать различные операторы: арифметические, логические и т.д. Рассмотрим каждый тип операций.
Арифметические операции
+ (операция сложения)
Например, $a + 5
- (операция вычитания)
Например, $a - 5
* (умножение)
Например, $a * 5
/ (деление)
Например, $a / 5
% (получение остатка от деления)
Например:
echo $a % 5; // равно 2
** (возведение в степень)
Например, $a ** 2
Примеры операций:
$a = 8 - 2; // 6, вычитание
$a = 8 * 2; // 16, умножение
$a = 8 / 2; // 4, деление
$a = 8 % 2; // 0, деление по модулю
$a = 8 ** 2; // 64, возведение в степень
Инкремент и декремент
Отдельно следует сказать операции инкремента и декремента, которые также являются арифметическими операциями, но производятся над одним операндом.
Инкремент - операция ++ увеличивает число на единицу. Например, ++$a
Есть два типа инкремента: префиксный инкремент (++$a) и постфиксный ($a++). Важно понимать разницу между этими операциями. Рассмотрим сначала префиксный инкремент:
$b = ++$a; // $b равно 13
echo "a = $a b = $b";
Результат работы:
a = 13 b = 13
Здесь сначала к значению переменной $a прибавляется единица, а затем ее значение приравнивается переменной $b.
Теперь посмотрим, что будет в случае с постфиксным инкрементом:
$b = $a++; // $b равно 12
echo "a = $a b = $b";
Результат работы:
a = 13 b = 12
Здесь сначала значение переменной $a передается переменной $b, а затем происходило увеличение значения переменной $a.
Декремент - операция -- представляет уменьшение значения на единицу. Она аналогично инкременту бывает префиксной и постфиксной и работает аналогично. Например, префиксный декремент:
$b = --$a; // $b равно 11
echo "a = $a b = $b";
Результат работы:
a = 11 b = 11
Сначала значение переменной $a уменьшается на единицу, а затем ее значение приравнивается переменной $b.
Постфиксный декрементом:
$b = $a--; // $b равно 12
echo "a = $a b = $b";
Результат работы:
a = 11 b = 12
Здесь же сначала значение переменной $a передается переменной $b и только после этого уменьшается на единицу.
Объединение строк
Для объединения строк используется оператор "точка". Например, соединим несколько строк:
$b=" мир";
echo $a . " " . $b . "!"; // Привет мир!
Если переменные представляют не строки, а другие типы, например, числа, то их значения преобразуются в строки и затем также происходит операция объединения строк.
Операции сравнения
Операции сравнения, как правило, применяются в условных конструкциях, когда надо сравнивать два значения, и в зависимости от результата сравнения выполнить некоторые действия. Имеются следующие операции сравнения.
==
Оператор равенства сравнивает два значения, и если они равны, возвращает true, иначе возвращает false: $a == 5
===
Оператор тождественности также сравнивает два значения, и если они равны, возвращает true, иначе возвращает false: $a === 5
!=
Сравнивает два значения, и если они не равны, возвращает true, иначе возвращает false: $a != 5
!==
Сравнивает два значения, и если они не равны, возвращает true, иначе возвращает false: $a !== 5
>
Сравнивает два значения, и если первое больше второго, то возвращает true, иначе возвращает false: $a > 5
< Сравнивает два значения, и если первое меньше второго, то возвращает true, иначе возвращает false: $a < 5
>=
Сравнивает два значения, и если первое больше или равно второму, то возвращает true, иначе возвращает false: $a >= 5
<= Сравнивает два значения, и если первое меньше или равно второму, то возвращает true, иначе возвращает false: $a <= 5
Оператор равенства и тождественности
Оба оператора сравнивают два выражения и возвращают true, если выражения равны. Но между ними есть различия. Если в операции равенства принимают два значения разных типов, то они приводятся к одному - тому, который интерпретатор найдет оптимальным. Например:
$b = (2 === "2"); // false (значения представляют разные типы)
Строка "2" по сути представляет то же значение, что и число 2, оператор сравнения возвратит true. Однако они представляют разные типы, поэтому оператор тождественности возвратит false
Аналогично работают операторы неравенства != и !==.
$b = (2 !== "2"); // true, так как значения представляют разные типы
Оператор <=>
Отдельно стоит сказать про оператор <=>. Он также сравнивает два значения и возвращает
0, если оба значения равны
1, если значение слева больше, чем значение справа
-1, если значение слева меньше, чем значение справа
Применение:
$b = 3 <=> 2; // 1 (эквивалентно 3 > 2)
$c = 1 <=> 2; // -1 (эквивалентно 1 < 2) echo "a=$a b=$b c=$c"; // a=0 b=1 c=-1
Логические операции
Логические операции обычно применяются для объединения результатов двух операций сравнения. Например, нам надо выполнить определенное действие, если истинны будут несколько условий. Имеются следующие логические операции:
&&
Возвращает true, если обе операции сравнения возвращают true, иначе возвращает false: $a && $b
and
Аналогично операции &&: $a and $b
||
Возвращает true, если хотя бы одна операция сравнения возвращают true, иначе возвращает false: $a || $b
or
Аналогично операции ||: $a or $b
!
Возвращает true, если операция сравнения возвращает false: !$a
xor
Возвращает true, если только одно из значений равно true. Если оба равны true или ни одно из них не равно true, возвращает false: $a xor $b
Примеры логических операций:
// аналогично
$a = (true and false); // false
$b = (true || false); // true
// аналогично следующей операции
$b = (true or false); // true
$c = !true; // false
Отдельно примеры с операцией xor:
$b = (false xor true); // true
$c = (false xor false); // false
Поразрядные операции
Поразрядные операции производятся над отдельными разрядными или битами числа. Числа рассматриваются в двоичном представлении, например, 2 в двоичном представлении 010, число 7 - 111.
& (логическое умножение)
Умножение производится поразрядно, и если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается число 0. Например:
$b = 5; //101
echo $a & $b; // равно 4 - 100
Здесь число 4 в двоичной системе равно 100, а число 5 равно 101. Поразрядно умножим числа и получим (1*1, 0*0, 0 *1) = 100, то есть число 4 в десятичном формате.
• | (логическое сложение)
Похоже на логическое умножение, операция также производится по двоичным разрядам, но теперь возвращается единица, если хотя бы у одного числа в данном разряде имеется единица. Например:
$b = 5; //101
echo $a | $b; // равно 5 - 101
Поразрядно сложим числа и получим (1+1, 0+0, 0+1) = 101, то есть число 5 в десятичном формате.
^ (операция исключающего ИЛИ)
Возвращает единицу, если у обоих операндов разные значения соответствующих разрядов. Но если у обоих операндов значения соответствующих разрядов совпадают, то возвращается 0. Например:
$b = 7 ^ 4; // 111^100=011 - в десятичой системе 3
Поразрядно произведем операцию 5 ^ 4 (в двоичной системе она аналогична операции 101^100): (1^1, 0^0, 0^1) = 001. В случае с 1^1 значения разрядов совпадают, поэтому возвращается 0. Во втором случае - 0^0 значения также совпадают, поэтому также возвращается 0. В третьем случае - 0^1 значения разные, поэтому возвращается 1. В итоге получится 001 или число 1 в десятичной системе.
~ (логическое отрицание)
инвертирует все разряды: если значение разряда равно 1, то оно становится равным нулю, и наоборот.
$b = ~$a; //11111011 -5
echo $b; // равно -5
<<
x<
>>
=
+=
x>>y - сдвигает число x вправо на y разрядов. Например, 16>>1 сдвигает число 16 (которое в двоичном представлении 10000) на один разряд вправо, то есть в итоге получается 1000 или число 8 в десятичном представлении
Операции присваивания
Приравнивает переменной определенное значение: $a = 5
Сложение с последующим присвоением результата. Например:
$a += 5;
echo $a; // равно 17
-=
Вычитание с последующим присвоением результата. Например:
$a -= 5;
echo $a; // равно 7
*=
Умножение с последующим присвоением результата:
$a *= 5;
echo $a; // равно 60
/=
Деление с последующим присвоением результата:
$a /= 5;
echo $a; // равно 2.4
.=
Объединение строк с присвоением результата. Применяется к двум строкам. Если же переменные хранят не строки, а, к примеру, числа, то их значения преобразуются в строки и затем проводится операция:
$a .= 5;
echo $a; // равно 125
// идентично
$b="12";
$b .="5"; // равно 125
%=
Получение остатка от деления с последующим присвоением результата:
$a %= 5;
echo $a; // равно 2
**=
Получение результата от возведения в степень:
$a **= 2;
echo $a; // равно 64 (8 в степени 2)
&=
Получение результата от операции логического умножения:
|=
Получение результата от операции логического сложения:
• ^=
Получение результата от операции исключающего ИЛИ:
<<= Получение результата от операции сдвига влево:
>>=
Получение результата от операции сдвига вправо:
Приоритет операций
Если одно выражение содержит несколько разных операций, то при выполнении выражения учитывается приоритет операций. Сначала выполняются операции с большим приоритетом и в конце с меньшим приоритетом.
Приоритет операций можно описать следующей таблицей:
**
++ -- ~
!
* / %
+ - .
<< >>
< > <= >=
== != === !== << <=<
&
^
|
&&
||
? : (тернарный оператор)
= += -= *= **= /= .= %= &= |= ^= <<= >>= (операторы присваивания)
and
xor
or
Чем выше оператор в этой таблице, тем больше его приоритет. Например:
Операция умножения имеет больший приоритет, чем сложение. Поэтому сначала выполняется подвыражение 5 * 2
При этом скобки повышают приоритет операции, используемой в выражении.
В данном случае сначала выполняется подвыражение 10 + 5 и только потом умножение.
статья взята с сайта:
Написать Администратору
Вы можете написать Администратору сайта.