В PHP операторы сравнения == (нестрогое сравнение) и === (строгое сравнение) работают принципиально по-разному. Вот детальное объяснение:
if (5 == "5") { // true
echo "Равны";
}
"5" преобразуется в число 5"" становится 0"abc" при сравнении с числом станет 0if (5 === "5") { // false
echo "Не выполнится";
}
5 !== строке "5"false !== 0 !== "" !== null| Сравнение | == результат |
=== результат |
|---|---|---|
0 == "0" |
true | false |
false == "" |
true | false |
null == false |
true | false |
"123" == 123 |
true | false |
=== - почти всегда предпочтительнее (защита от неочевидных преобразований)== - только когда осознанно нужно игнорировать типы (редкие случаи)== проверяет свойства, === - тот же экземпляр$a = new stdClass();
$b = new stdClass();
$a == $b; // true
$a === $b; // false
=== - это "равны ли и значение, и тип", тогда как == - "равны ли значения после приведения типов". Всегда используйте ===, если нет веской причины делать иначе.