2009-12-04 160 views
6

我把这个看变化:PHP不等于和不等于,等于

不等于 !=

不等于,等于

!==

哪一个标准还是它们有不同的含义?

我猜后者也检查值和名称,如果它是一个字符串,而 前者可能只是检查只值...

回答

19

==和值!=检查平等,你可以比较不同类型,其中某些价值观被认为是等价的。

例如,"" == 0的计算结果为true,即使一个是字符串而另一个是整数。

=== and !==检查类型以及值。因此,"" === 0将评估为false


编辑:要添加的如何 “类型戏法” 可能赶上你了另一个例子,试试这个:

var_dump("123abc" == 123); 

给出bool(true)

+0

谢谢各位,为了快速响应,所以使用!==或者只是==添加了对类型和值的检查,谢谢。 – Newb

+2

PHP允许将值从一种类型自由转换为另一种类型。如果您将字符串“456”转换为数字,则会将其转换为456.非常方便。 PHP比较运算符==只检查值。所以,''456“== 456'。现在,“”(空字符串)将等于0,并且为FALSE和NULL。但有时你不想要这个。要检查是否为FALSE而不是0,可以使用'var === FALSE' – nash

+0

比较运算符,仅检查值(==),谢谢 – Newb

5

!=不是值

!==不等于等于按值和类型在PHP

6

第二个是类型严格的。

"1" != 1; // false 
"1" !== 1; // true because the first is a string, the second is a number 
1
在示例

"2" == 2 -> true 

"2" === 2 -> false 


"2" !== 2 -> true 

"2" != 2 -> false 

这也是当您使用某些功能,可以返回0false

例如strpos 重要:你要总是检查类型太那里不仅有价值。因为0 == false但是0 !== false

因为strpos可以返回0如果字符串位于第一个位置。但那不是一样的错误,这意味着字符串尚未找到。

+0

“2”是一个字符串,因此当使用==时,我们正在对类型和值进行检查,因此结果对于第一种情况是正确的。 但是,对于第二种情况,===使它更严格(类型和值必须匹配);因此,我们发现字符串“2”不会等于值2,这很有趣。 – Newb

+0

刚刚得到Ben James的启发,==只检查值。 – Newb