Возможный дубликат:
Как различаются операторы сравнения равенства (== double equals) и идентичности (=== triple equals)?
Я знаю основную разницу между ==
и ===
, но могут ли некоторые опытные кодеры рассказать мне некоторые практические примеры для обоих случаев?
==
проверяет, равны ли значения двух операндов или нет. ===
проверяет значения, а также тип двух операндов.
if("1" == 1) echo "true"; else echo "false";
Вышеизложенное выводит значение true
.
if("1" === 1) echo "true"; else echo "false";
Вышеизложенное выводит false
.
if("1" === (string)1) echo "true"; else echo "false";
Вышеизложенное выводит значение true
.
Самый простой способ показать его – использовать строки. Два примера:
echo ("007" === "7" ? "EQUAL!" : "not equal"); echo ("007" == "7" ? "EQUAL!" : "not equal");
В дополнение к примеру @ DavidT, более практичным примером является следующее:
$foo = "Goo"; $bar = "Good Morning"; if (strpos($bar,$foo)) echo "Won't be seen, returns false because the result is in fact 0"; if (strpos($bar,$foo) !== false) echo "True, though 0 is returned it IS NOT false)";