如果我在 PHP 中不使用 === 或 !== 可能会出错


What may go wrong if I don't use === or !== in PHP

可能的重复项:
PHP == vs === 运算符
PHP 中的 !== 和 != 之间有区别吗?

在 PHP 中,if 命令的条件包含运算符 ===!==

我从不使用它们。所以我想知道我们什么时候真正需要打电话给他们?

例如

if (FALSE !=  someMethod() ) {
}
if (FALSE !== someMethod() ) {
}

第一if可能出现什么问题?

0 == '' == null == false == array()

如果您需要知道其中两个之间的区别,则需要===。

http://php.net/manual/en/function.strpos.php

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
strpos('apple', 'a') == 0
strpos('apple', 'b') == false

如果没有 ===,您将不知道"apple"是否在第一个位置有"a",或者它是否不存在。

举这样一个例子:

$str = '*Hello*World*';
if (FALSE != strpos($str, '*')){
    // Echo if string has an '*' in it!
    echo $str;
}

这是行不通的,因为 strpos(( 返回第一个匹配项的索引。在本例中,它返回 0。 FALSE == 0,但FALSE !== 0.

PHP 在使用 ==!=' instead of === and '!== 时使用松散比较。松散比较意味着,类型在"相似性"上进行比较。要大致了解类型的比较方式,请查看此处