Содержание
Различают несколько групп операторов.
Операторы арифметические
$x + $z // вернет сумму переменных $x - $z // вернет разность переменных $x * $z // вернет произведение переменных $x / $z // вернет результат деления переменных $x % $z // вернет целочисленный остаток деления переменных 5 % 2 // вернет 1, т.е. количество чисел после запятой (5/2=2,5)
Часто нужно взять значение одной переменной, сложить с другой и положить обратно в эту же переменную. См код:
$w += $v // то же самое, что и $w = $w+$v
PHP не строго типизированный, он динамический. Когда php видит арифметические операторы, он подозревает, что и слева, и справа от него стоят числа. Это не как в java-скрипт, который строго типизированный язык. Если в нем выполнить арифметические операции с числом и строкой, то выскочит ошибка. В php же никакой ошибки не будет, потому что всегда какой-то один тип приводит к другому. Если в выражении стоят число и строка, php будет приводить результат к числу. Этого лучше не допускать в коде. См.пример:
$v = 'apple'; $z = $v * 9; // результат 0,т.е. строка приведется к 0 $a = true; // приведется к 1 $A = $a * 2; // вернет 2 $b = '5'; //строка приведется к числу 5 $B = $b *7; //35 $c = false; //приведется к 0 $C = $c * 999; // вернет 0 $d = '7days'; // приведет строку к числу 7 $D = $d *11; // вернет 77
Т.е. php приводит строку к числу следующим образом: он заглядывает в строку и смотрит символы, похожие на цифру до тех пор, пока не упрется в не-цифру, все остальное он пропускает.
Оператор строковый
Есть оператор конкатенации (склеивания) строк. Это точка (.).
$a = 'tomate'; $b = $a . 'red'; // вернет строку tomate red $a .='red'; // вернет строку tomate red $c = 'orange'; $cc = 'fruit'; echo $c . $cc // выведет строку orange fruit
Операторы сравнения
- $a == $b Результат приравняется к булеву типу (true или false). Такое двойное равно называется мягким сравнением. Т.е. один тип приводится к другому типу, если они разные.
9==9 // вернет true '9'==9 // вернет true,т.к. строка приравнялась к числу
- $a === $b — это жесткое сравнение. Т.е. когда переменные сравниваются по значению и по типу. Вернет true, если переменные равны по типу и значению.
- $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.
Операторы логические
При логических операторах php каждый из операндов приводит к булеву типу. Существует:
$a and $b // true, если и $a, и $b true. $a or $b // true, если или $a, или $b true. !$a // true, если $a не true, т.е. идем от противного, идет отрицание переменной. $a && $b // true, если и $a, и $b true. Это альтернатива оператора 'and'. Но он выше по приоритету. $a || $b // true, если или $a, или $b true. Это альтернатива оператора 'or'. Но он выше по приоритету.