无法理解验证逻辑:=== 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,但相等和恒等运算符对许多编程语言来说都很常见。
我正在学习验证的东西,但我无法理解这一点:
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,但相等和恒等运算符对许多编程语言来说都很常见。