В PHP операторы сравнения ==
(нестрогое сравнение) и ===
(строгое сравнение) работают принципиально по-разному. Вот детальное объяснение:
if (5 == "5") { // true
echo "Равны";
}
"5"
преобразуется в число 5
""
становится 0
"abc"
при сравнении с числом станет 0
if (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
===
- это "равны ли и значение, и тип", тогда как ==
- "равны ли значения после приведения типов". Всегда используйте ===
, если нет веской причины делать иначе.