我有点惊讶,为什么发生这种情况?!基本PHP变量
$test = "THE STRING";
if($test == 0) echo "WTF!?"; else echo "OK";
的输出是:
WTF!?
在上线,我们刚才$测试可变字符串,为什么它等于由上面的例子基于!?
感谢
我有点惊讶,为什么发生这种情况?!基本PHP变量
$test = "THE STRING";
if($test == 0) echo "WTF!?"; else echo "OK";
的输出是:
WTF!?
在上线,我们刚才$测试可变字符串,为什么它等于由上面的例子基于!?
感谢
您应该使用
===
这一点。 PHP使用这个进行严格比较。
if($test === 0) {
echo "WTF?"
} else {
echo "OK!";
}
试试这个:
if($test === 0){
echo "WTF?"
} else {
echo "OK!";
}
这是因为PHP是松散的类型,阅读所有关于它在文档http://www.php.net/manual/en/language.operators.comparison.php - 了解的好处和陷阱(以及如何避免他们) – 2013-04-29 09:11:31
@decze:不是,虽然这两个问题的答案可能是相同的。 – EricSchaefer 2013-04-29 09:12:11
由于松散类型转换,您的==正在尝试将您的字符串与数字值0进行比较。为了确保可以正确计算,它会尝试将字符串转换为整数。由于它不是有效的数字值,因此将其转换为0. ===使其强制执行类型检查。由于2个值不是相同的“类型”,它会自动返回false。 – Tom 2013-04-29 09:19:10