相同的操作员奇怪的行为

时间:2014-10-31 11:22:35

标签: php operators comparison-operators

任何人都可以解释一下php中“相同”运算符的这种奇怪行为吗?

$any_integer_but_not_one = -1;

var_dump( !$any_integer_but_not_one === 1 ); // bool(false)
var_dump(  $any_integer_but_not_one !== 1 ); // bool(true)

$int_one = 1;

var_dump( !$int_one === 1 ); // bool(false)
var_dump(  $int_one !== 1 ); // bool(false)

我预计这些测试将始终返回相同的结果(true-truefalse-false),但它们不会。

我认为!x === yx !== y做同样的事情,那有什么区别?在这里,我说 相同的运算符,而不是相等的运算符。
(我发现的任何其他问题都是关于平等身份之间的差异)

1 个答案:

答案 0 :(得分:3)

因为 -

!$any_integer_but_not_one将返回false

var_dump( !$any_integer_but_not_one === 1 );var_dump( false === 1 );

所以它会返回false