如果有人可以向我解释为什么以下代码,我将不胜感激......
$result = true;
if ($result == "discontinued"){
echo "IN";
}
if ($result == "invalid"){
echo "IN2";
}
触发两个回声(即ININ2)....我知道我可以将操作符更改为===并且它将起作用但我不明白发生了什么。感谢
答案 0 :(得分:6)
使用比较(==
)运算符时,任何无法转换为false的值都将计算为true。这包括任何非空字符串。这是因为type juggling in PHP。所以"discontinued"
的计算结果为true,因为它不是空字符串。如果您使用相同的运算符(===
)类型转换未执行,那么"discontinued"
将被视为文字字符串,然后您的语句将评估为false。
执行类型杂耍时,以下内容将评估为false。其他所有内容都将被评估为真: