2011-08-30 163 views
5

我的代码中有一条if语句与以下内容类似,并且我花了我一直的时间来弄清楚问题所在。

$a = 0; 
if($a == 'something') 
{ 
//this was being output when I didn't want it to be 
} 

使用

$a = '0'; 

固定的,但我真的不知道是怎么回事。

回答

4

一个字符串,一个整数。 PHP会在两者之间根据需要,翻译,除非你正在使用的“严格”运营商:

(0 == '0') // true 
(0 === '0') // false (types don't match). 

在你的情况,找你整数0比较字符串“某物”。 PHP会将字符串'something'转换为整数。如果这里根本没有数字,它会变成一个整数0,这使得你的比较是真实的。

+0

很快,谢谢! – Josh

2

只是一个猜测,但我认为它试图将字符串转换为整数。

intval('something')我预计将返回0

0

想要进行比较的数值($a = 0;)转换为字符串。在这种情况下,字符串被转换为数字,如果开头没有数字,PHP会将字符串转换为0,因此为真

然而在另一种情况下,你竞选了两个不同的字符串,所以它是false

相关问题