Операции сравнения
Операции сравнения выполняют сравнение двух значений. Выражения, в которых присутствуют эти операции, возвращают в зависимости от результата сравнения логические значения true
(истина) или false
(ложь).
Операции равенства ==
(два знака равно) позволяют проверить равенство двух значений. Например:
$a == $b
Так проверяется равенство значений, хранящихся в переменных $a
и $b
. Результатом этого выражения будет true
, если они равны, или false
, если они не равны.
Эту операцию легко спутать с операцией присваивания. Это не приведет к выводу сообщения об ошибке, но в общем случае не даст результата, на который вы, возможно расчитывали. В общем случае любые нулевые значения интерпретируются как true
, а нулевые — как false
. Предположим, что две переменные были инициализированы следующим образом:
$a = 5;
$b = 7;
Если затем проверить результат операции $a = $b
, получится значение true
. Почему? Значением выражения $a = $b
будет значение, присвоенное левому операнду, которое в данном случае равно 7. Это не нулевое значение, поэтому выражение вычисляется как true
. Если же вашей целью была проверка выражения $a = = $b
, результат которого равен false
, значит, в коде допущена логическая ошибка, которую исключительно трудно обнаружить. Всегда следует проверять правильность использования этих двух операций, чтобы убедится, что вы их не перепутали и выбрали именно ту, которая нужна.
Подобного рода ошибку очень легко допустить, и, вероятно, вы будите их совершать в своей программистской деятельности.
РНР поддерживает также ряд других операций сравнения, которые перечислены в таблице 3. Обратите внимание на операцию проверки идентичности, которая возвращает значение true
только в том случае, если оба операнда равны и имеют один и тот же тип. Например, 0 =='0'
даст true
, тогда как 0 === '0'
— false
, поскольку первый 0 представляет собой целое число, а второй строку.
Операция | Название | Использование |
---|---|---|
== | равно | $a == $b |
=== | идентично | $a ==== $b |
!= | не равно | $a != $b |
!== | не идентично | $a !== $b |
<> | не равно | $a <> $b |
< | меньше | $a < $b |
> | больше | $a > $b |
<= | меньше или равно | $a <= $b |
>= | больше или равно | $a >= $b |
Логические операции
Логические операции служат для комбинирования результатов логических условий. Например, нас может интересовать случай, когда значение переменной $a
находится в диапазоне между 0 и 100. В этом случае потребуется проверить условия $a >= 0
и $a<= 100
, используя операцию логического И (AND)
, как продемонстрировано в следующем примере:
$a >= 0 && $a <= 100
PHP поддерживает логические операции AND (И), OR (ИЛИ), XOR (исключающее ИЛИ) и NOT (НЕ)
.
Операция | Название | Использование | Результат |
---|---|---|---|
! | НЕ | !$b | Возвращается true, если значение $a равно false, и наоборот. |
&& | И | $a && $b | Возвращается true, если обе переменные $a и $b имеют значение true; в противном случае возвращается false. |
|| | ИЛИ | $a || $b | Возвращается true, если любая из переменных $a или $b или обе имеют значение true; иначе возвращается false. |
and | И | $a and $b | Та же, что и &&, но с меньшим приоритетом. |
or | ИЛИ | $a or $b | Та же, что и ||, но с меньшим приоритетом. |
Операции and
и or
обладают меньшим приоритетом, нежели операции &&
и ||
.
Поразрядные операции
Поразрядные операции позволяют обрабатывать целые числа как последовательность представляющих их разрядов. Используются эти операции не очень часто
Операция | Название | Использование | Результат |
---|---|---|---|
& | поразрядное И | $a & $b | Разряды переменных $a и $b, установленные в единичные состояния, устанавливаются в единичные состояния в результате. |
| | поразрядное ИЛИ | $a | $b | Разряды переменных $a и $b, установленные в единичные состояния, устанавливаются в единичные состояния в результате. |
- | поразрядное НЕ | -$a | Разряды переменных $a и $b, установленные в единичные состояния, устанавливаются в нулевые состояния в результате и наоборот. |
^ | поразрядное исключающее ИЛИ | $a ^ $b | Разряды переменных $a и $b, установленные в единичные состояния, но не в обееих переменных, устанавливаются в единичные состояния в результате. |
<< | сдвиг влево | $a << $b | Разряды в переменной $a сдвигаются влево на $b позиций. |
>> | сдвиг вправо | $a >> $b | Разряды в переменной $a сдвигаются вправо на $b позиций. |
Другие операции
В дополнение к рассмотренным выше операциям существует также множество других.
Операция запятой (,
) используется для разделения аргументов функций и элементов других списков. Обычно она применяется по мере необходимости. Две специальных операции new и ->
используются, соответственно, для создания экземпляра класса и для доступа к элементам класса.
Существуют еще три операции, которые мы рассмотрим.
Тернарная операция, а именно, ?:. Она записывается в следующей форме:
условие ? значение, если условие истинно : значение, если условие ложно
Например:
($grade > 50 ? 'Сдан' или 'Не сдан ');
Это выражение содержательно интепретирует оценку ($grade
), полученную студентом на экзамене, как 'Сдан' или 'Не сдан'.
Операция подавления ошибки @ может использоваться перед любым выражением, т.е. перед любой конструкцией, которая генерируеи или имеет значение. Например:
$a = @ (57/0);
Без операции @
эта строка будет генерировать предупреждение о делении на ноль. При наличии операции @
вывод сообщения об ошибке подавляется.
В случае такого подавления сообщений об ошибках потребуется предусмотреть некоторый код для проверки, что именно стало причиной появления того или иного предупреждения. Если при установке модуля РНР функция track_errors
была активизирована, то сообщение об ошибке будет сохраняться в глобальной переменной $php_errormsg
.
Операция выполнения представляет собой пару операций — пару обратных одинарных кавычек (` `
). Их не следует путать с обычными одинарными кавычками — обычно они вводятся с помощью клавиши, на котором расположен символ ~
(тильда).
Все, что заключено в обратные одинарные кавычки, РНР пытается запустить как команду, вводимую в командной строке сервера. Вывод команды будет значением выражения.
Например, в среде UNIX-подобных операционных систем можно использовать следующие строки:
$out = `ls - la`;
echo '<pre>'. $out. '</pre>';
На Windows-сервере этим строкам эквивалентны такие строки:
$out = `dir c:`;
echo '<pre>'. $out. '</pre>';
Любая из версий этого кода получит листинг каталога и сохранит его в переменной $out
. Затем его можно вывести в окно веб-браузера либо манипулировать им по своему усмотрению.
В РНР существует несколько операций для работы с массивами. Операции доступа к элементам массива ([ ]
) позволяют работать с элементами массивов. Кроме того, в некоторых контекстах массивов можно использовать операцию =>
.
Операция | Название | Использование | Результат |
---|---|---|---|
+ | объединение | $a & $b | Возвращается массив, содержащий все, что хранится в переменных $a и $b. |
== | равно | $a | $b | Возвращается true, если $a и $b содержат одни и теже элементы. |
=== | идентично | ~$a | Возвращается true, если $a и $b содержат одни и теже элементы, расположенные в одном и том же порядке. |
!= | не равно | $a ^ $b | Возвращается true, если $a и $b не равны. |
<> | не равно | $a << $b | Возвращается true, если $a и $b не равны. |
!== | не идентично | $a >> $b | Возвращается true, если $a и $b не идентичны. |
Следует отметить, что все перечисленные в таблице операции имеют аналоги для работы со склярными переменными и значениями. До тех пор, пока вы помните, что операция +
выполняет сложение склярных типов данных и объединение массивов, поведение операции не должно вызывать вопросов. Сравнивать массивы с данными склярных типов нельзя.
Существует единственная операция определенного типа — instanceof
. Хотя эта операция используется в объектно-ориентированном программировании, мы даем ее здесь ради завершенности рассмотрения.
Операция instanceof
позволяет проверить, является ли заданный объект экземпляром конкретного класса.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться