为什么是-1>在PHP中为null

时间:2014-05-01 09:46:47

标签: php

在PHP(5.3.14)中,以下代码返回true

-1 > null

JavaScript中完全相同的代码返回false。这背后的原因是什么?

1 个答案:

答案 0 :(得分:40)

当一方存在空值时,PHP会将双方转换为布尔值。

关于Comparison Operators的PHP手册部分指出,操作数1的类型是" bool或null",反之亦然,它"将双方转换为bool,{{ 1}}"

任何具有非零值的数字都是considered to be truthy,但这可能不直观。


在JavaScript中,比较的定义不同,因此会在数字上对它们进行比较(FALSE < TRUE - > 0)。

官方JavaScript规范

ECMA-262声明:

  

3。如果不是Type(px)都是String而Type(py)是String,那么

     

一个。设nx是调用ToNumber(px)的结果。因为px和py是原始值,所以评估顺序并不重要    湾让ny成为调用ToNumber(py)的结果。

众所周知,PHP具有相当不一致的类型强制系统 - PHP: a fractal of bad design突出了PHP遭受的一些其他问题。 (我敢说,我个人认为它比JavaScript更糟糕,这种语言也因偷偷摸摸的强制而闻名。)