【发布时间】:2014-10-31 11:22:35
【问题描述】:
谁能解释一下 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 做同样的事情,那么有什么区别呢?这里我说仅用于 相同 运算符,而不是 相等 运算符。
(我发现的任何其他问题都是关于 equality 和 identity 之间的差异)
【问题讨论】:
-
他们输出的不是一样的吗? False 最后两个 False
-
@Umair 是的,但请看前两个测试。
-
我以为
(! sth === sth )和( sth !== sth)这两个运算符每次都会返回相同的东西。
标签: php operators comparison-operators