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