我有一个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);
}
这种功能是否存在?我错过了什么吗?
答案 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)
答案 2 :(得分:-2)
有效的解决方案可能是使用
检查对象是否为空if(empty($a) === false){
return count($a);
}
这应该适用于7.3之前的php版本。希望这会有所帮助。