2013-04-29 41 views
0

我有点惊讶,为什么发生这种情况?!基本PHP变量

$test = "THE STRING"; 
if($test == 0) echo "WTF!?"; else echo "OK"; 

的输出是:

WTF!? 

在上线,我们刚才$测试可变字符串,为什么它等于由上面的例子基于!?

感谢

+4

这是因为PHP是松散的类型,阅读所有关于它在文档http://www.php.net/manual/en/language.operators.comparison.php - 了解的好处和陷阱(以及如何避免他们) – 2013-04-29 09:11:31

+0

@decze:不是,虽然这两个问题的答案可能是相同的。 – EricSchaefer 2013-04-29 09:12:11

+0

由于松散类型转换,您的==正在尝试将您的字符串与数字值0进行比较。为了确保可以正确计算,它会尝试将字符串转换为整数。由于它不是有效的数字值,因此将其转换为0. ===使其强制执行类型检查。由于2个值不是相同的“类型”,它会自动返回false。 – Tom 2013-04-29 09:19:10

回答

0

您应该使用

=== 

这一点。 PHP使用这个进行严格比较。

if($test === 0) { 
    echo "WTF?" 
} else { 
    echo "OK!"; 
} 
0

试试这个:

if($test === 0){ 
    echo "WTF?" 
} else { 
    echo "OK!"; 
} 
0

使用此代码,而不是(三重等号):

if($test === 0) echo "WTF!?"; else echo "OK"; 

阅读Comparison Operators以获取更多信息。