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版本,所以这个答案现在是可以接受的。@只有在未定义变量时才授予,但这是意料之中的