$a=12; $a .= 5;
echo $a; // равно 125 // идентично $b="12";
$b .="5"; // равно 125
%= Получение остатка от деления с последующим присвоением результата:
$a=12; $a %= 5;
echo $a; // равно 2
\Операции сравнения
Операции сравнения, как правило, применяются в условных конструкциях, когда надо сравнивать два значения, и в зависимости от результата сравнения выполнить некоторые действия. Имеются следующие операции сравнения.
== Оператор равенства сравнивает два значения, и если они равны, возвращает 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, если выражения равны. Но между ними есть различия. Если в операции равенства принимают два значения разных типов, то они приводятся к одному - тому, который интерпретатор найдет оптимальным. Например:
<?php
$a = "22a"; $b = 22;
75
if($a==$b) echo "равны"; else
echo "не равны"; ?>
Очевидно, что переменные хранят разные значения разных типов. Но при сравнении они будут приводится к одному типу - числовому. И переменная $a будет приведена к числу 22. И в итоге обе переменных окажутся равны.
Или, например, следующие переменные также будут равны:
$a = false; $b = 0;
Чтобы избежать подобных ситуаций используется операция эквивалентности, которая учитывает не только значение, но и тип переменной:
$a = "22a"; $b = 22; if($a===$b)
echo "равны"; else
echo "не равны";
Теперь переменные будут не равны.
Аналогично работают операторы неравенства != и !==.
Логические операции
Логические операции обычно применяются для объединения результатов двух операций сравнения. Например, нам надо выполнить определенное действие, если истинны будут несколько условий. Имеются следующие логические операции:
&& Возвращает true, если обе операции сравнения возвращают true, иначе возвращает false: $a == 5 && $b = 6
and Аналогично операции &&: $a == 5 and $b > 6
|| Возвращает true, если хотя бы одна операция сравнения возвращают true,
иначе возвращает false: $a == 5 || $b = 6 or Аналогично операции ||: $a < 5 or $b > 6
! Возвращает true, если операция сравнения возвращает false: !($a >= 5)
xor. возвращает true, если только одно из значений равно true. Если оба равны true или ни одно из них не равно true, возвращает false. Например: $a=12;
$b=6;
76
if($a xor $b) echo 'true'; else
echo 'false';
Здесь результат логической операции будет false, так как обе переменных имеют определенное значение. Изменим код:
$a=12; $b=NULL; if($a xor $b) echo 'true'; else
echo 'false';
Здесь уже результат будет true, так как значение одной переменной не установлено. Если переменная имеет значение NULL, то в логических операциях ее значение будет рассматриваться как false
Битовые операции
Битовые операции производятся над отдельными битами числа. Числа рассматриваются в двоичном представлении, например, 2 в двоичном представлении 010, число 7 - 111.
& (логическое умножение) Умножение производится поразрядно, и если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается число 0. Например:
$a1 = 4; //100 $b1 = 5; //101
echo $a1 & $b1; // равно 4
Здесь число 4 в двоичной системе равно 100, а число 5 равно 101. Поразрядно умножим числа и получим (1*1, 0*0, 0 *1) = 100, то есть число 4 в десятичном формате.
| (логическое сложение) Похоже на логическое умножение, операция также производится по двоичным разрядам, но теперь возвращается единица, если хотя бы у одного числа в данном разряде имеется единица. Например:
$a1 = 4; //100 $b1 = 5; //101
echo $a1 | $b1; // равно 5
~ (логическое отрицание) инвертирует все разряды: если значение разряда равно 1, то оно становится равным нулю, и наоборот.
77
$b = 5; echo ~$b;
<< x<<y - сдвигает число x влево на y разрядов. Например, 4<<1 сдвигает число 4 (которое в двоичном представлении 100) на один разряд влево, то есть в итоге получается 1000 или число 8 в десятичном представлении
>> x>>y - сдвигает число x вправо на y разрядов. Например, 16>>1 сдвигает число 16 (которое в двоичном представлении 10000) на один разряд вправо, то есть в итоге получается 1000 или число 8 в десятичном представлении Объединение строк. Для объединения строк используется оператор "точка". Например, соединим несколько строк:
$a="Привет, "; $b=" мир"; echo $a . $b . "!";
Если переменные представляют не строки, а другие типы, например, числа, то их значения преобразуются в строки и затем также происходит операция объединения строк.
1.7.7. Условные конструкции
Условные конструкции позволяют направлять работу программы в зависимости от условия по одному из возможных путей.
Конструкция if..else
Конструкция if (условие) проверяет истинность некоторого условия, и если оно окажется истинным, то выполняется блок выражений, стоящих после if. Если же условие ложно, то есть равно false, тогда блок if не выполняется. Например:
<?php $a = 4; $b = 2; if($a>0)
{
$result= $a * $b;
echo "результат равен: $result <br>";
}
echo "конец выполнения программы"; ?>
Блок выражений ограничивается фигурными скобками. И так как в данном случае условие истинно (то есть равно true): значение переменной $a больше 0, то блок инструкций в фигурных скобках также будет выполняться. Если бы
78
значение $a было бы меньше 0, то блок if не выполнялся.
Если блок if содержит всего одну инструкцию, то можно опустить фигурные скобки:
<?php $a = 4; $b = 2; if($a>0)
echo $a * $b;
echo "<br>конец выполнения программы"; ?>
Можно в одной строке поместить всю конструкцию:
if($a>0) echo $a * $b;
В данном случае к блоку if относится только инструкция echo $a * $b; else
Блок else содержит инструкции, которые выполняются, если условие после if ложно, то есть равно false:
<?php $a = 4; $b = 2; if($a>0)
{
echo $a * $b;
}
else
{
echo $a / $b;
}
echo "<br>конец выполнения программы"; ?>
Если $a больше 0, то выполняется блок if, если нет, то выполняется блок else. Поскольку здесь в обоих блоках по одной инструкции, также можно было не использовать фигурные скобки для определения блоков:
if($a>0)
echo $a * $b;
else
echo $a / $b;
elseif
Конструкция elseif вводит дополнительные условия в программу:
$a = 5; $b = 2;
79