无法理解验证逻辑:=== vs ==

Can't understand validation logic: === vs ==

我正在学习验证的东西,但我无法理解这一点:

if (strpos($value, "@") === false) { echo "Validation failed." }

===== 有什么区别?为什么我们不能使用 == 而不是 === false? false 是表示 @ 不在 $value 中还是表示 0

相等运算符==
A == B 检查 A 和 B 是否相等,但不检查它们是否是相同的数据类型。

相关示例:0 == false 为真

身份运算符===
A === B 检查 A 和 B 是否相等并且数据类型相同。

一个相关的例子:0 === false 是错误的

在这里申请

将此应用于您的情况,如果发现 @ 作为字符串的第一个字符,strpos($value,"@") 将 return 0。如果根本找不到,它将 return false.

所以为了避免混淆这两种情况,测试必须使用===而不是==

有用的参考资料:

http://php.net/manual/en/function.strpos.php http://php.net/manual/en/language.operators.comparison.php

我假设这是 php,但相等和恒等运算符对许多编程语言来说都很常见。