На самом деле, к этому моменту вы уже знакомы практически со всеми операциями над переменными и выражениями в PHP. Ниже приводится их полный список с краткими комментариями, заменяя выражения-операнды буквами a и b.
a + b — сложение;
a — b — вычитание;
a * b — умножение;
a / b — деление;
Операция деления / возвращает целое число (то есть, результат деления нацело), если оба выражения a и b — целого типа (или же строки, выглядящие как целые числа), в противном случае результат будет дробным. Операция вычисления остатка от деления % работает только с целыми числами, так что применение ее к дробным может привести к, мягко говоря, нежелательному результату.
Примеры:
<?php
echo 5+4 .'<br>'; //результат 9
echo "5"+"4".'<br>'; //результат 9
echo "5"+4 .'<br>'; //результат 9
echo "5 рублей"+4 .'<br>'; //результат 9
echo "Доход 5"+4 .'<br>'; //результат 4
echo "Привет"+4 .'<br>'; //результат 4
echo "Привет"+"всем!" .'<br>';//результат 0
$x=12;
$y=4;
echo $x/$y .'<br>'; //результат 3
echo $x%$y .'<br>'; //результат 0
echo $x++ .'<br>';/*результат: значение переменной $x становится равным 13, но выражение возвращает 12*/
echo ++$x; //результат 14
?>
В окне веб-браузера это будет выглядеть ТАК.
Примечание. В JavaScript в выражениях с оператором сложения + данных строкового и числового типов, последние приводятся к строковому, а не числовому типу. Поэтому выражение "Привет"+4 даст "Привет4", а не 4 как в РНР. С другой стороны, в РНР выражение "5"+4 вернет 9, а в JavaScript 54.
Собственно, других строковых операций и нет — все остальное, что можно сделать со строками в PHP, выполняют стандартные функции.
Пример:
<?php
echo "Саша". "Маша"; //результат "СашаМаша"
echo '<br>';
$a="Привет";
$b="всем!";
echo $a. " ".$b; /*результат "Привет всем!". Здесь склеиваются три строки: значение переменной $a, строка с пробелом " " и значение переменной $b*/
?>
В окне веб-браузера это будет выглядеть ТАК.
Основным из этой группы операций является оператор присваивания =. Еще раз напомню, что он не обозначает "равенство", а говорит интерпретатору, что значение правого выражения должно быть присвоено переменной слева.
Опрераторы присваивания
Оператор | Пример | Эквивалентное выражение |
+= | x += y | x = x + y |
– = | x – = y | x = x – y |
* = | x * = y | x = x * y |
/ = | x / = y | x = x / y |
% = | x % = y | x = x % y |
. = | x. = y | x = x + y |
Пример:
<?php
$x="Привет";
$x.=" всем!";
echo $x; //результат "Привет всем!"
$x=5; $x*=7;
echo '<br>';
echo $x; //результат 35
?>
В окне веб-браузера это будет выглядеть ТАК.
Для операций $a+=1 и $b-=1 в связи с их чрезвычайной распространенностью в PHP ввели специальные операторы.
Эти операторы увеличивают или уменьшают значение переменной, а в выражении возвращают значение переменной $a до изменения.
Пример.
<?php
$a=10;
$b=$a++;
echo "a=$a, b=$b"; //результат a=11, b=10
echo '<br>';
$a=10;
$b=--$a;
echo "a=$a, b=$b"; //результат a=9, b=9
?>
В окне веб-браузера это будет выглядеть ТАК.
Операторы инкремента и декремента на практике применяются очень часто. Например, они встречаются практически в любом цикле for.
Эти операции предназначены для работы (установки/снятия/проверки) групп битов в целой переменной. Биты целого числа — это не что иное, как отдельные разряды того же самого числа, записанного в двоичной системе счисления. Например, в двоичной системе число 12 будет выглядеть как 1100, а 2 — как 10, так что выражение 12|2 вернет нам число 14 (1110 в двоичной записи). Если переменная не целая, то она вначале округляется, а уж затем к ней применяются перечисленные ниже операторы.
Это в своем роде уникальные операции, потому что независимо от типов своих аргументов они всегда возвращают одно из двух: false или true. Операции сравнения позволяют сравнивать два значения между собой и, если условие выполнено, возвращают true, а если нет — false.
Следует отметить, что в PHP сравнивать можно только скалярные (то есть строки и числа) переменные. Для массивов и объектов этого делать нельзя. Их даже нельзя сравнивать на равенство (при помощи оператора = =), но при выполнении такой операции PHP не выдает предупреждения. Так что удивившись как-то раз, почему это два совершенно разных массива при сравнении их с помощью = = оказываются вдруг одинаковыми, вспомните, что перед сравнением оба операнда преобразуются в слово array, которое потом и сравнивается.
Примеры:
<?php
echo "5.3"==5.3; //возвращает true
echo '<br>';
echo "5.3"===5.3; //возвращает false
echo '<br>';
echo "1"==true; //возвращает true
echo '<br>';
echo 1==true; //возвращает true
echo '<br>';
echo "1"=="true"; //возвращает false
echo '<br>';
echo 1=="true"; //возвращает false
echo '<br>';
echo "0"=="false"; //возвращает false
echo '<br>';
echo "0"==false; //возвращает true
echo '<br>';
echo 0=="false"; //возвращает true
echo '<br>';
echo 0==false; //возвращает true
echo '<br>';
echo null==null; //возвращает true
echo '<br>';
echo null===null; //возвращает true
echo '<br>';
echo "abcd" > "abcd";//возвращает false
echo '<br>';
echo "abc" < "abcd"; //возвращает true
echo '<br>';
echo "235ab" < "abcdghrz"; //возвращает true
?>
В окне веб-браузера это будет выглядеть ТАК.
В PHP версии 4 появился новый оператор сравнения — тройной знак равенства = = =, или оператор проверки на эквивалентность. Как мы уже замечали ранее, PHP довольно терпимо относится к тому, что строки неявно преобразуются в числа, и наоборот. Он не только сравнивает два выражения, но также их типы. Возможности оператора эквивалентности идут далеко за пределы сравнения "обычных" переменных. С его помощью можно сравнивать также и массивы, объекты и т. д. Это бывает иногда очень удобно. Разумеется, для оператора = = = существует и его антипод — оператор != = = (он состоит из целых четырех символов!).
Эти операции предназначены исключительно для работы с логическими выражениями и также возвращают false или true.
Следует заметить, что вычисление логических выражений, содержащих такие операции, идет всегда слева направо, при этом, если результат уже очевиден (например, false&&что-то всегда дает false), то вычисления обрываются, даже если в выражении присутствуют вызовы функций. Например, в операторе
$logic = 0&&(time()>100);
стандартная функция time() никогда не будет вызвана.
Будьте осторожны с логическими операциями — не забывайте про удваивание символа. Обратите внимание, что, например, | и || — два совершенно разных оператора, один из которых может потенциально возвращать любое число, а второй — только false и true.