繁体   English   中英

为什么空数组比任何数字都大?

[英]Why is an empty array greater than any number?

有人能解释一下 PHP 在将空数组与任何数字进行比较并返回true什么吗?

var_dump([] > -1); // true
var_dump([] > 0); // true
var_dump([] > 222222222) // true

我在 PHP 7.0、7.1 和 5.6 中对此进行了测试。

首先,请永远不要做这种比较; 执行此操作的代码非常可疑,并且可能非常损坏。

回答您的问题:原因是数组与非数组的比较具有文档中规定的定义行为。 该数组始终大于与其进行比较的任何标量值。 对象总是大于数组,数组总是大于标量(如整数)。 其他比较以多种方式处理,如文档中所定义。

从文档:

与各种类型的比较

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

一些示例代码和演示

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

根据PHP 文档

数组总是更大

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM