Основные операции
Для того, что бы производить какие-то действия с данными, в php имеются операции. То есть команды на выполнение определенных действий.
Операцию (присвоения) мы уже рассмотрели. Напомним. Чтобы записать в переменную данные (наполнить содержимым или если грамотно - присвоить значение) используется математический знак "равно".
Далее следуют математические операции. Тут никаких особых различий с алгеброй:
1
2
3
4
5
6
7
8
|
$a = $b + $c; // Сложение (сумма) $a = $b - $c; // Вычитание (разность) $a = $b * $c; // Умножение (произведение) $a = $b / $c; // Деление (частное) $a = $b % $c; // Деление по модулю (остаток от деления)
|
Операции инкремента и декремента. Это придумано для ленивых (шутка)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
// Инкремент (увеличение на единицу) эти четыре строки идентичны. $a = $a + 1; $a += 1; ++$a; // Префиксная форма. $a++; // Постфиксная форма // Декремент (уменьшение на единицу) эти четыре строки идентичны. $a = $a - 1; $a -= 1; --$a; // Префиксная форма. $a--; // Постфиксная форма
|
Префиксная и постфиксная формы инкремента и декремента отличаются тем, что при первом сначала значение увеличивается, потом считывается значение. При постфиксной наоборот.
Потом операции сравнения.
1
2
3
4
5
6
7
8
9
10
11
|
$a == $b; // Равно (а равно б) $a === $b; // Строго равно (если у переменных $a и $b одинаковы и значения и типы) $a != $b; // Не равно (а не равно б) $a !== $b; // Строго не равно (если переменные $a и $b отличаются значением или хотя бы типом) $a > $b; // Больше (а больше чем b) $a < $b; // Меньше (а меньше чем b) $a >= $b; // Больше или равно (а больше чем b либо равна b) $a <= $b; // Меньше или равно (а меньше чем b либо равна b)
|
Выражения с операторами сравнения возвращают булево значение ложь (false) либо истину (true).
Что сия инсинуация значит. Это значит, что на том месте, где написано выражение, появится его результат. То есть:
1
2
3
4
5
6
7
|
$a = 1; $b = 2; ($a != $b) // Истина. Значит, в это место php при выполнении программы поставит true ( true ) // Эта запись идентична верхней при соблюдении условий.
|
Логические операции. Иногда нужно выполнить несколько проверок, чтобы докопаться до истины. Допустим "сегодня пятница?" и "время больше 17-00?" Если совпали оба условия, то можно кричать ура.
Вот чтобы выполнить несколько проверок операторами сравнения, существуют логические операции.
1
2
3
4
5
|
$a == $b && $a != $c; // Логическое "и" (а равно б и а не равно с) $a == $b || $a == $c; // Логическое "или" (а равно б или а равно с)
|
Логические операции помогают, когда необходимо учинить сложную проверку (проверку сложного условия, которое описывается комбинацией нескольких простых)
Еще есть оператор инверсии. То есть не, отрицание.
1
2
3
4
5
6
|
// Эти две записи идентичны, хотя операции выполняются разные. ($a != $b) // Здесь сравниваются а и б. если они не равны, то выражение истинно !($a == $b) // Здесь при неравных а и b выражение ложно. Но знак инверсии превращает его в истину
|
Еще есть операция конкатенации. Для того чтобы к одной строке "приклеить" вторую, используется конкатенация (знак "точка")
1
2
3
4
5
6
|
$a = 'Привет, '; $b = 'Мир!'; $c = $a . $b; // Переменная $c будет содержать строку "Привет, Мир!"
|
Символ перечисления (запятая) позволяет разделить данные при передаче их в функции или в массивах.
1
2
3
4
5
|
$forcemeat = meat_grinder($pork, $beef);
|
Приоритеты выполнения математических операторов похожи на те, которые присущи алгебре. Но алгебраическая нотация (на мой взгляд) куда менее строгая и куда более запутанная, чем нотация большинства языков программирования.
1
2
3
4
5
6
|
$a = $b + $c * $d; // Сначала выполнится умножение с на d, потом к произведению прибавится b $a = ($b + $c) * $d; // Сначала выполнится сложение b и c потом сумма умножится на d
|
У логических операторов приоритет "и" выше, чем приоритет "или"
Кроме того , кроме приоритета есть еще и направление вычисления одноприоритетных операций, или так называемая ассоциативность.
Именно поэтому (5-2-1)
вычисляется как 2 = ((5-2) - 1)
а не как 4 = (5 - (2-1))
Хотя $p=$q=4 (не забываем, = это операция присваивания, а не оператор)
вычисляется как ($p = ($q=4))
a не как (($p=$q) = 4)