[英]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.