我在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('')
,感觉很奇怪。
答案 0 :(得分:1)
来自count()
docs:
因此,返回
array_or_countable
中的元素数。当参数既不是数组也不是具有实现的Countable
接口的对象时,将返回1
。
count('')
返回1
,就像count('seventeen')
返回1
一样。按预期工作。