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

时间:2017-05-07 13:00:55

标签: php truthiness

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

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

=====之间的区别是什么?为什么我们不能使用==,为什么会=== false呢? false是否表示@不在$value0

1 个答案:

答案 0 :(得分:0)

平等运营商==
A == B检查A和B是否彼此相等,但不检查它们是否是相同的数据类型。

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

身份运营商===
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,但是相同和身份运算符在许多编程语言中都很常见。