$a=0和$a=&x27之间的差异;0';在PHP中

$a=0和$a=&x27之间的差异;0';在PHP中,php,Php,我的代码中有一个类似于下面的if语句,我花了很长时间才弄清楚问题出在哪里 $a = 0; if($a == 'something') { //this was being output when I didn't want it to be } 使用 $a = '0'; 修正了,但我真的不知道这里发生了什么。一个是字符串,一个是整数。PHP将根据需要在两者之间进行转换,除非您使用的是“严格”运算符: (0 == '0') // true (0 === '0') // false (t

我的代码中有一个类似于下面的if语句,我花了很长时间才弄清楚问题出在哪里

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

$a = '0'; 

修正了,但我真的不知道这里发生了什么。

一个是字符串,一个是整数。PHP将根据需要在两者之间进行转换,除非您使用的是“严格”运算符:

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

在您的例子中,您正在将整数0与字符串“something”进行比较。PHP将字符串“something”转换为整数。如果里面根本没有数字,它将转换为整数0,这使您的比较为真。

只是猜测,但我假设它试图将字符串转换为整数


intval('something')
我希望返回0。

您正在将数值(
$a=0;
)与字符串进行比较。在本例中,字符串被强制转换为数字,如果开头没有数字,PHP将字符串强制转换为0,true

但是,在另一种情况下,您使用两个不同的字符串,因此它是false