任何人都可以解释一下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-true
或false-false
),但它们不会。
我认为!x === y
和x !== y
做同样的事情,那有什么区别?在这里,我说仅 相同的运算符,而不是相等的运算符。
(我发现的任何其他问题都是关于平等和身份之间的差异)
答案 0 :(得分:3)
因为 -
!$any_integer_but_not_one
将返回false
。
当var_dump( !$any_integer_but_not_one === 1 );
为var_dump( false === 1 );
所以它会返回false