Difference Between $a = 0 and $a = '0' in PHP


Difference Between $a = 0 and $a = '0' in PHP

我的代码中有一个类似于下面的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