PHP中$ a = 0和$ a ='0'之间的差异

时间:2011-08-30 16:44:25

标签: php

我的代码中有一个类似于以下内容的if语句,我花了很长时间才弄明白问题是什么。

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

使用

$a = '0'; 

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

3 个答案:

答案 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