如何检查某物是否可数?
How to check if something is countable?
我有一个变量:$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 7.3
根据documentation,您可以使用is_countable
函数:
if (is_countable($a)) {
echo count($a);
}
对于以前的 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
我有一个变量:$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 7.3
根据documentation,您可以使用is_countable
函数:
if (is_countable($a)) {
echo count($a);
}
对于以前的 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