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