Операторы сравнения, как следует из их названия, позволяют сравнивать два значения и возвращают true или false в зависимости от того, как соотносятся операнды. Операторы сравнения всегда (за исключением оператора Космический корабль) возвращают логические значения, и эти значения чаще всего применяются в таких операторах как if, while или for для управления ходом исполнения программы.

Также может быть полезно просмотреть таблицы сравнения типов, поскольку в них показаны примеры различных сравнений, связанных с типами.

Пример Название Результат
$a == $b Равно true если $a равно $b после преобразования типов.
$a === $b Тождественно равно true если $a равно $b и имеет тот же тип.
$a != $b Не равно true если $a не равно $b после преобразования типов.
$a <> $b Не равно true если $a не равно $b после преобразования типов.
$a !== $b Тождественно не равно true если $a не равно $b или они разных типов.
$a < $b Меньше true если $a строго меньше $b.
$a > $b Больше true если $a строго больше $b.
$a <= $b Меньше или равно true если $a меньше или равно $b.
$a >= $b Больше или равно true если $a больше или равно $b.
$a <=> $b Космический корабль Используется для сравнения двух значений и возврата результата. Этот оператор возвращает -1, если левый операнд меньше правого; 0, если они равны; и 1, если левый операнд больше правого.

Оператор равенства (==)

Оператор равенства принимает операнды любого типа, если два операнда равны, возвращается значение true, в противном случае - false.

Если операнды имеют разные типы данных, PHP попытается преобразовать их перед сравнением к одному типу. Например, такое выражение '5' == 5 вернёт значение true, так как PHP автоматически приведет сравниваемые значения к одному типу данных. Аналогично, выражение $a == 5 вернёт значение true, если переменная $a содержит значение 5.

$a = 5;
$b = 5;
$c = '5';
var_dump($a == $b); // true
var_dump($a == $c); // true

Оператор тождественного равенства/Идентичности (===)

Оператор тождественного равенства/Идентичности принимает операнды любого типа и возвращает true, если их значения совпадают (равны), и false, если они различны. Чем же он отличается от оператора равенства? Оператор идентичности проверяет два операнда на идентичность, руководствуясь строгим определением совпадения. Это означает, что помимо равенства самих значений операндов, они также должны относиться к одному и тому же типу данных. Важно запомнить, что операторы == и === означают равно и тождественно равно/идентично.

$a = 5;
$b = 5;
$c = '5';
var_dump($a === $b); // true
var_dump($a === $c); // false

Оператор неравенства (!=, <>)

Оператор неравенства имеет два вида: != и <>. Он является противоположностью оператора == и возвращает true, в том случае, если значения операндов не равны. Оператор неравенства возвращает false только в том случае, если значения по обе стороны от него равны друг другу.

$a = 5;
$b = 7;
$c = '5';
var_dump($a != $b); // true
var_dump($a != $c); // false

Оператор тождественного неравенства/Неидентичности (!==)

Оператор тождественного неравенства/Неидентичности выполняет проверку, в точности противоположную оператору ===. Он возвращает true, если значения операндов не равны друг другу или не относиться к одному и тому же типу данных.Важно запомнить, что операторы != и !== означают не равно и тождественно не равно/неидентично.

$a = 5;
$b = 7;
$c = '5';
$d = 5;
var_dump($a !== $b); // true
var_dump($a !== $c); // true
var_dump($a !== $d); // false

Оператор меньше (<)

Оператор меньше является функциональной противоположностью оператора больше. Он возвращает true, когда значение слева от него меньше значения, находящегося справа, и false, если значение левого операнда больше правого или значения равны.

$a = 5;
$b = 7;
$c = '5';
$d = 5;
var_dump($a < $b); // true
var_dump($a < $c); // false
var_dump($a < $d); // false

Оператор больше (>)

При использовании оператора больше, сравнение возвращает true только в том случае, если значение слева от оператора больше значения справа от него. Как и другие операторы, оператор > работает не только с числовыми значениями, но и со строковыми. Но как одна строка может быть больше другой?

При работе со строками буква в нижнем регистре больше буквы в верхнем регистре. При сравнении строк PHP сначала проверяет на несовпадение первую букву строки. Если разницы не обнаруживается, происходит переход к следующему символу и т.д., пока не будет найдено различие или не будет достигнут конец строки. Если два значения с каждой из сторон оператора > будут равны, оператор также вернет false.

$a = 5;
$b = 3;
$c = '3';
$d = 5;
var_dump($a > $b); // true
var_dump($a > $c); // true
var_dump($a > $d); // false

Оператор меньше или равно (<=)

Оператор меньше или равно похож на оператор больше или равно. Чтобы оператор <= вернул true, значение слева от оператора должно быть меньше или равно значению справа от него. Он возвращает false, только если значение слева от него больше, чем значение справа.

$a = 5;
$b = 3;
$c = '3';
$d = 5;
var_dump($a <= $b); // false
var_dump($a <= $c); // false
var_dump($a <= $d); // true

Оператор больше или равно (>=)

Оператор больше или равно немного отличается от тех операторов сравнения, которые рассматривались ранее. Он добавляет возможность равенства двух значений по обе стороны от него, то есть, чтобы было возвращено true, значение слева от оператора должно быть больше или равно значению справа от него. Оператор больше или равно возвращает false, только если значение слева от него меньше, чем значение справа.

$a = 5;
$b = 3;
$c = '7';
$d = 5;
var_dump($a >= $b); // true
var_dump($a >= $c); // false
var_dump($a >= $d); // true

Оператор Космический корабль (<=>)

Этот оператор предназначен для сравнения двух выражений. Он возвращает -1, 0 или 1 если $a, соответственно, меньше, равно или больше чем $b.

// Целые числа
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Числа с плавающей точкой
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Строки
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1