当我尝试确定一个空数组是否大于0,但返回true时。 为什么php空数组大于0?
$a = [];
if (is_array($a) && count($a) > 0) {
die('array');
} elseif ($a > 0) {
die('ok');
}
输出为'ok',有人可以告诉我为什么吗?
答案 0 :(得分:1)
http://php.net/manual/en/language.operators.comparison.php根据php文档,当将array
与type
以外的任何其他array
进行比较时,总是认为该数组更大。这就是定义比较的方式。我的猜测是,当比较两个可以是任何类型的变量时,比较规则会强制将数组unequal
设置为其他任何类型。
答案 1 :(得分:0)
考虑使用empty()检查一个空数组,我给人的印象是,它不需要执行发现计数所需的工作,而只需确定数组是否为空,应该是更快的结果。 / p>
为了在您的场景中进行演示(包括数组检查,尽管您应该严格将其定义为一个数组,但应该信任它作为一个数组,但是我可以理解,您只是提供了一个示例,它可能来自未知来源)
$a = [];
if (is_array($a)) {
die(empty($a) ? 'empty' : 'not empty');
} else {
die('Not an array');
}
答案 2 :(得分:0)
答案 3 :(得分:-1)
您在elseif条件下犯了错误,即您仅使用$ a,但必须使用count($ a)
$a = array();
if (is_array($a) && count($a) > 0) {
die('array');
}
elseif (count($a) > 0) {
die('ok');
}
$a = array();
if (is_array($a) && count($a) > 0) {
die('array');
}
elseif (count($a) > 0) {
die('ok');
}