我的代码中有一个类似于以下内容的if语句,我花了很长时间才弄明白问题是什么。
$a = 0;
if($a == 'something')
{
//this was being output when I didn't want it to be
}
使用
$a = '0';
修好了,但我真的不知道这里发生了什么。
答案 0 :(得分:4)
一个是字符串,一个是整数。 PHP将根据需要在两者之间进行转换,除非您使用'严格'运算符:
(0 == '0') // true
(0 === '0') // false (types don't match).
在您的情况下,您将整数0与字符串'something'进行比较。 PHP会将字符串'something'转换为整数。如果那里根本没有数字,它将转换为整数0,这使你的比较成立。
答案 1 :(得分:2)
只是猜测,但我认为它正在尝试将字符串转换为整数。
intval('something')
我预计会返回0。
答案 2 :(得分:0)
您正在将数值($a = 0;
)与字符串进行比较。在这种情况下,字符串被转换为数字,如果开头没有数字,则PHP将字符串转换为0,因此 true 。
在另一种情况下,你使用了两个不同的字符串,因此它是 false 。