我不断看到这种变化:
不相等
!=
不相等,相等
!==
哪个是标准或它们有不同的含义?
我猜后者也会检查值和名称(如果它是字符串),而前者可能只检查值......
==
并按!=
值检查相等性,在 PHP 中,您可以比较某些值被认为是等效的不同类型。
例如,"" == 0
计算结果为true
,即使一个是字符串而另一个是整数。
===
并!==
检查类型和值。
因此,"" === 0
将评估为false
。
编辑:要添加另一个示例,说明这种“类型杂耍”如何让你脱颖而出,试试这个:
var_dump("123abc" == 123);
给bool(true)
!
第二个是类型严格的。
"1" != 1; // false
"1" !== 1; // true because the first is a string, the second is a number
!=
值不相等
!==
值和类型不相等
在一个例子中:
"2" == 2 -> true
"2" === 2 -> false
"2" !== 2 -> true
"2" != 2 -> false
当您使用某些可以返回0
或false
例如 strpos:您也希望始终在那里检查类型,而不仅仅是值。因为0 == false
但是0 !== false
。
因为strpos可以0
在字符串位于第一个位置时返回。但这与 false 不同,这意味着尚未找到该字符串。