关于COUNT('')的一些信息

时间:2019-07-19 09:57:49

标签: php

我在php7.3.4中发现了一个问题。

if ( count( '' ) == 1 )
{
    echo 1;
}  else {
    echo 2;
}

该程序输出1.然后,我检查了源函数'count'。

PHP_FUNCTION(count)
{
    ....
    switch (Z_TYPE_P(array)) {
        case IS_NULL:
            php_error_docref(NULL, E_WARNING, "Parameter must be an array or an object that implements Countable");
            RETURN_LONG(0);
        break;
        case IS_ARRAY:
            ...
        break;
        case IS_OBJECT:
            ....
        break;
        default:
            php_error_docref(NULL, E_WARNING, "Parameter must be an array or an object 
            that implements Countable");
            RETURN_LONG(1);
        break;
}

这很容易产生BUG。 我认为count('')可能输出错误或0优于1和警告。 你有什么想法? count(NULL)不等于count(''),感觉很奇怪。

1 个答案:

答案 0 :(得分:1)

来自count() docs

  

返回array_or_countable中的元素数。当参数既不是数组也不是具有实现的Countable接口的对象时,将返回1

因此,

count('')返回1,就像count('seventeen')返回1一样。按预期工作。