PHP奇怪的比较行为

时间:2014-01-15 10:52:27

标签: php

为什么php认为空数组大于1?对象不是? 如果与布尔相比甚至更奇怪。

var_dump(array() > 1); // Print true
var_dump(array() === false); // Print false
var_dump(array() === true); // Print false again

var_dump(new stdClass > 1); // Print false

var_dump('' > 1); // Print false

PHP 5.4.4-14 + deb7u7

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

array() > 1

不是真正有意义的比较,虽然诚然array() < 1是真的似乎更直观。但是,从文档中,与非数组相比,数组总是更大。

array() === false
array() === true

===检查比较的项目是否为同一类型。数组与布尔值的类型不同,因此上述两个都是假的。

'' > 1

上面的空字符串为0,所以这是假的。

new stdClass > 1

这会发出Object of class stdClass could not be converted to int的通知,这可能是您看到错误的原因。

More info here.