"!$ a == $ b"比"$ a!= $ b"快吗?

haz*_*ard 0 php operators

我正在阅读一本关于运营商的PHP书.

而且这本书说它比那if(!$a == $b)更快if($a != $b).
这是真的?

我用MS尝试了这个但没有结果.你怎么看?

编辑: if($a != $b)然后更快if(!$a == $b)

rai*_*7ow 10

这似乎是一个悖论,但这些陈述并不等同:

$a = '0';
$b = null;

var_dump(!$a == $b); // false
var_dump($a != $b); // true
Run Code Online (Sandbox Code Playgroud)

...因为非传递型强制.因此,谈论速度在这里没有任何意义.

更新:也许这也应该解释.)第一次比较将被评估为......

(!'0') == null;
Run Code Online (Sandbox Code Playgroud)

换句话说,首先'0'会转换为boolean(导致false;注意与JavaScript的区别).而!false计算结果为true,当然, -这只是不能等于null在任何语言(但实际上 null 被转换为布尔也只有这些值进行比较).

在第二次比较'0'(字符串)与null- 比较- 突然规则被改变.null转换为空字符串(!),这个空字符串将与实际比较'0'.不用说,这些也不相同.

最重要的是,在摆弄速度比较运算符时应该非常小心.它可能会导致非常微妙 - 并且跟踪错误非常不同.