我的代码中有一个类似于下面的if语句,我花了很长时间才弄清楚问题是什么。
$a = 0;
if($a == 'something')
{
//this was being output when I didn't want it to be
}
使用$a = '0';
修复了它,但是我真的不知道这里发生了什么
一个是字符串,一个是整数。PHP会根据需要在两者之间进行转换,除非你使用了'strict'操作符:
(0 == '0') // true
(0 === '0') // false (types don't match).
在你的例子中,你正在比较一个整数0和一个字符串"某物"。PHP会将字符串'something'转换为整数。如果里面根本没有数字,它将转换为整数0,这使得你的比较为真。
只是猜测,但我认为它试图将字符串强制转换为整数。
我期望intval('something')
将返回0
您正在将数值($a = 0;
)与字符串进行比较。在这种情况下,字符串被强制转换为数字,如果开头没有数字,PHP将字符串强制转换为0,因此为true
在另一种情况下,你比较了两个不同的字符串,所以它是false