可能重复:
php == vs === 运算符
===
我理解 PHP 中,!==
与==
,之间的区别,!=
但我总是觉得自己很喜欢===
,!==
但我没有真正的理由。在 PHP.net 上的文档中,经常有“警告”说您应该使用它===
来检查某些内置函数的返回值。所以我的问题是为什么我应该使用一组运算符而不是另一组?
非常感谢 :)。
可能重复:
php == vs === 运算符
===
我理解 PHP 中,!==
与==
,之间的区别,!=
但我总是觉得自己很喜欢===
,!==
但我没有真正的理由。在 PHP.net 上的文档中,经常有“警告”说您应该使用它===
来检查某些内置函数的返回值。所以我的问题是为什么我应该使用一组运算符而不是另一组?
非常感谢 :)。
如果自动类型转换没有按照您(或将来必须维护您的代码的开发人员)期望的方式进行转换(并且类型对话的规则通常很复杂并且在语言,所以这种混淆的空间很大)。
除非您需要打字对话,否则请始终使用三字符版本。
最常见的原因是函数返回数字/字符串,并且可能在错误时返回 false。如果 0 是有效结果,而 false 表示错误,则必须使用 === 进行区分。但是,总是使用 === 可能会导致意外行为,例如当返回 null 并且也被认为是无效值,但类型检查仅用于 false 时。因此,如果数据来自您自己的源代码/PHP 函数,并且您知道无效值正好是 1,请使用严格检查。然而,在大多数情况下,== 是一个安全的选择,尤其是在您处理外部数据时,这是您无法控制的。
===
并且!==
仅在您关心两个操作数属于同一类型的情况下才应使用。
否则 - 使用==
and !=
- 因为隐式转换是我们喜欢 php 的原因
===
!==
如果您使用的函数可能成功返回 0,失败时返回 FALSE,这很重要。在 PHP 0 中也等于 FALSE,这将导致函数失败的结论。
if(somefunction() == 0) {
// Do something
}
假设 somefunction 成功退出时返回 0,失败时返回 FALSE,上面的代码片段将在返回码为 FALSE 时触发。
使用===
可以防止你这样做,因为它只会在响应确实为 0 时触发。