【发布时间】:2017-05-07 13:00:55
【问题描述】:
我正在学习验证的东西,但我无法理解:
if (strpos($value, "@") === false) { echo "Validation failed." }
=== 和 == 有什么区别?为什么我们不能使用== 而不是=== false? false 是否意味着@ 不在$value 中或者意味着0 ?
【问题讨论】:
标签: php truthiness
我正在学习验证的东西,但我无法理解:
if (strpos($value, "@") === false) { echo "Validation failed." }
=== 和 == 有什么区别?为什么我们不能使用== 而不是=== false? false 是否意味着@ 不在$value 中或者意味着0 ?
【问题讨论】:
标签: php truthiness
等式运算符==A == B 检查 A 和 B 是否相等,但不检查它们是否是相同的数据类型。
一个相关的例子:0 == false 是真的
Identity Operator ===A === B 检查 A 和 B 是否相等以及相同的数据类型。
一个相关的例子:0 === false 是假的
在此申请
将此应用于您的情况,如果发现@ 作为字符串的第一个字符,strpos($value,"@") 将返回0。如果根本没有找到,它会返回false。
所以为了避免混淆这两种情况,测试必须使用===而不是==。
有用的参考资料:
http://php.net/manual/en/function.strpos.php http://php.net/manual/en/language.operators.comparison.php
我假设这是 php,但相等和身份运算符在许多编程语言中都很常见。
【讨论】: