12

我有一个 var: $a。我不知道那是什么。我想看看能不能数出来。通常,只有数组,我可以这样做:

if (is_array($a)) {
    echo count($a);
}

但其他一些事情是可数的。假设 aIlluminate\Support\Collection在 Laravel 中是可数的:

if ($a instanceof \Illuminate\Support\Collection) {
    echo count($a);
}

但是有没有什么可以同时做这两件事(也许与其他一些可数的实例一起工作)。就像是:

if (is_countable($a)) {
    echo count($a);
}

这种功能存在吗?我错过了什么?

4

2 回答 2

26

对于以前的 PHP 版本,你可以使用这个

if (is_array($foo) || $foo instanceof Countable) {
    return count($foo);
}

或者你也可以像这样实现一种 polyfill

if (!function_exists('is_countable')) {

    function is_countable($c) {
        return is_array($c) || $c instanceof Countable;
    }

}

请注意,这个 polyfill 不是我想出的,而是直接从 RFC 中提取的新功能提案https://wiki.php.net/rfc/is-countable

于 2018-04-18T13:40:49.960 回答
13

PHP 7.3

根据文档,您可以使用is_countable功能:

if (is_countable($a)) {
    echo count($a);
}
于 2018-03-09T08:44:47.630 回答