【问题标题】:How to check if something is countable?如何检查某事物是否可数?
【发布时间】:2017-08-11 11:53:13
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

标签: php arrays laravel laravel-collection


【解决方案1】:

PHP 7.3

根据documentation,可以使用is_countable函数:

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

【讨论】:

  • 这是一个尚未发布的 PHP 版本:D
  • PHP 7.3 Alpha 1 现已发布。另请注意:PHP 7.3 不应在生产中使用。请等待生产就绪版本,以免麻烦。
  • 我们现在是 7.4,所以这个答案现在已经可以接受了。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2016-05-19
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2012-04-30
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多