Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查某物是否可数?_Php_Arrays_Laravel_Laravel Collection - Fatal编程技术网

Php 如何检查某物是否可数?

Php 如何检查某物是否可数?,php,arrays,laravel,laravel-collection,Php,Arrays,Laravel,Laravel Collection,我有一个变量:$a。我不知道是什么。我想看看我能不能数一数。通常,仅使用数组,我可以执行以下操作: if (is_array($a)) { echo count($a); } 但还有一些事情是可以计算的。假设一个照明\支持\收藏可以用Laravel计数: if ($a instanceof \Illuminate\Support\Collection) { echo count($a); } 但是有什么东西可以同时做这两件事吗(也许可以和其他一些可数实例一起工作)。比如: i

我有一个变量:
$a
。我不知道是什么。我想看看我能不能数一数。通常,仅使用数组,我可以执行以下操作:

if (is_array($a)) {
    echo count($a);
}
但还有一些事情是可以计算的。假设一个
照明\支持\收藏
可以用Laravel计数:

if ($a instanceof \Illuminate\Support\Collection) {
    echo count($a);
}
但是有什么东西可以同时做这两件事吗(也许可以和其他一些可数实例一起工作)。比如:

if (is_countable($a)) {
    echo count($a);
}
这种功能存在吗?我错过了什么吗?

PHP7.3 根据,您可以使用
is_countable
功能:

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

对于以前的PHP版本,您可以使用

if (is_array($foo) || $foo instanceof Countable) {
    return count($foo);
}
或者你也可以实现一种类似这样的多边形填充

if (!function_exists('is_countable')) {

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

}


请注意,此polyfill不是我提出的,而是直接从RFC中提取的新功能提案

可能?有了
$var instanceof Countable
@Scuzzy的方法是一个好的开始,也许还值得尝试一下是否是可遍历的:好消息。看起来PHP7.3的目标是为尚未发布的PHP版本提供一个内置函数:DPHP 7.3 Alpha 1现已发布。还请注意:生产中不应使用PHP7.3。请等待生产就绪版本以避免麻烦。我们现在是7.4版本,所以这个答案现在是可以接受的。@只有在未定义变量时才授予,但这是意料之中的