为什么空数组大于任何数字?

时间:2016-12-14 15:55:33

标签: php arrays

当有人解释将空数组与任何数字进行比较并返回@versions = PaperTrail::Version.order('created_at') 时,有人会解释PHP内部会发生什么吗?

true

我在PHP 7.0,7.1和5.6中进行了测试。

2 个答案:

答案 0 :(得分:3)

首先,请不要进行这种比较;执行此操作的代码非常可疑,可能非常破碎。

回答你的问题:原因是数组与非数组的比较具有set out in the documentation定义的行为。数组总是大于它所比较的​​任何标量值。对象总是大于数组,并且数组总是大于标量(例如整数)。其他比较以各种方式处理,如文档中所定义。

来自文档:

  

与各种类型的比较

Type of Operand 1    Type of Operand 2    Result
...
array                anything             array is always greater

一些示例代码和demo

var_dump(
    [] > -1, //true
    [] > 0, // true
    [] > 222222222, // true
    [] > [], // false, obviously
    [] > new stdClass(), //false, object wins
    new stdClass() > [] // true, object wins
    );

答案 1 :(得分:2)

the PHP docs

  

数组总是更大