如何解释php空数组大于零?

时间:2019-01-22 07:28:36

标签: php

当我尝试确定一个空数组是否大于0,但返回true时。 为什么php空数组大于0?

$a = [];
if (is_array($a) && count($a) > 0) {
    die('array');
} elseif ($a > 0) {
    die('ok');
}

输出为'ok',有人可以告诉我为什么吗?

4 个答案:

答案 0 :(得分:1)

http://php.net/manual/en/language.operators.comparison.php根据php文档,当将arraytype以外的任何其他array进行比较时,总是认为该数组更大。这就是定义比较的方式。我的猜测是,当比较两个可以是任何类型的变量时,比较规则会强制将数组unequal设置为其他任何类型。

答案 1 :(得分:0)

考虑使用empty()检查一个空数组,我给人的印象是,它不需要执行发现计数所需的工作,而只需确定数组是否为空,应该是更快的结果。 / p>

为了在您的场景中进行演示(包括数组检查,尽管您应该严格将其定义为一个数组,但应该信任它作为一个数组,但是我可以理解,您只是提供了一个示例,它可能来自未知来源)

$a = [];
if (is_array($a)) {
  die(empty($a) ? 'empty' : 'not empty');
} else {
  die('Not an array');
}

答案 2 :(得分:0)

enter image description here

感谢@Quasimodo的克隆@u_mulder

答案 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'); }