Операции сравнения. Логические операции. Поразрядные операции

Операции сравнения

Операции сравнения выполняют сравнение двух значений. Выражения, в которых присутствуют эти операции, возвращают в зависимости от результата сравнения логические значения 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 представляет собой целое число, а второй строку.

Таблица 3. Операции сравнения РНР

Операция Название Использование
== равно $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 (НЕ).

Таблица 4. Логические операции РНР

Операция Название Использование Результат
! НЕ !$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 обладают меньшим приоритетом, нежели операции && и ||.

Поразрядные операции

Поразрядные операции позволяют обрабатывать целые числа как последовательность представляющих их разрядов. Используются эти операции не очень часто.

Таблица 5. Поразрядные операции

Операция Название Использование Результат
& поразрядное И $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. Затем его можно вывести в окно веб-браузера либо манипулировать им по своему усмотрению.

В РНР существует несколько операций для работы с массивами. Операции доступа к элементам массива ([ ]) позволяют работать с элементами массивов. Кроме того, в некоторых контекстах массивов можно использовать операцию =>.

Таблица 6. Операции для работы с массивами

Операция Название Использование Результат
+ объединение $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 позволяет проверить, является ли заданный объект экземпляром конкретного класса.

назадвверхвперед
Rambler's Top100