С оператором равенства ==
(двойным знаком равенства) мы уже не раз встречались в этом курсе. Его не следует путать с оператором присваивания =
(одинарным знаком равенства). В примере первый оператор присваивает значение, а второй проверяет его на равенство.
Пример. Присваивание значения и проверка его на равенство
<?php
$month = "Март";
if ($month == "Март") echo "Весна наступила";
?>
Как видно из примера, возвращая значение TRUE
или FALSE
, оператор сравнения позволяет проверять условия, используя инструкцию if
. Но это еще не все, поскольку РНР является языком со слабой типизацией. Если два операнда выражения равенства имеют разные типы, РНР преобразует их к тому типу, который имеет для него наибольший смысл.
К примеру, любые строки, составленные полностью из цифр, при сравнении с числами будут преобразованы в числа. В примере ниже переменные $а
и $b
являются двумя разными строками, и поэтому вряд ли стоило ожидать, что какая-то из инструкций if
выведет результат.
Пример. Операторы равенства и тождественности
<?php
$a = "1000";
$b = "+1000";
if ($a == $b) echo "1";
if ($a === $b) echo "2";
?>
Но если запустить этот пример, вы увидите, что он выведет число, а это означает, что результат вычисления первой инструкции if
является TRUE
. Причина в том, что обе строки сначала конвертируются в числа, и 1000 имеет такое же числовое значение, что и +1000.
В отличие от первой, во второй инструкции if
используется оператор тождественности — тройной знак равенства, который удерживает РНР от автоматического преобразования типов. Поэтому переменные $а
и $b
сравниваются как строки и теперь считаются отличающимися друг от друга, в этом случае на экран ничего не выводится.
Как и в случае с принудительным заданием уровня приоритетности операторов, если возникнут сомнения в том, будет ли РНР конвертировать типы операндов, для отмены такого поведения интерпретатора можно воспользоваться оператором тождественности.
Аналогично использованию оператора равенства для определения равенства операндов можно проверить их на неравенство, используя оператор неравенства !=
. Следующий пример является измененным примером предыдущего, в котором операторы равенства и тождественности были заменены противоположными им операторами.
Пример. Операторы неравенства и нетождественности
<?php
$а = "1000":
$b = "+1000":
if ($а != $b) echo "1":
if ($а !== $b) echo "2";
?>
Как, наверное, и ожидалось, первая инструкция if
не выводит на экран число 1, потому что в коде ставится вопрос о неравенстве числовых значений переменных $а
и $b
. Вместо этого будет выведено число 2, поскольку вторая инструкция if
ставит вопрос о нетождественности прежнего типа операндов переменных $а
и $b
, и ответом будет TRUE
, потому что они не тождественны.
Операторы отношения | Операторы сравнения |