如何检查某些东西是否可数?

时间:2017-03-20 09:12:43

标签: php arrays laravel laravel-collection

我有一个var:$a。我不知道它是什么。我想检查一下是否可以算数。通常,只有数组,我可以这样做:

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

但其他一些事情是可数的。让我们说Laravel可以计算Illuminate\Support\Collection

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

但是有两件事可以做到(也许可以与其他一些可数实例一起工作)。类似的东西:

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

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

3 个答案:

答案 0 :(得分:14)

对于以前的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

答案 1 :(得分:10)

PHP 7.3

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

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

答案 2 :(得分:-2)

有效的解决方案可能是使用

检查对象是否为空
if(empty($a) === false){
  return count($a);
}

这应该适用于7.3之前的php版本。希望这会有所帮助。