如何检查某事物是不是可数?
Posted
技术标签:
【中文标题】如何检查某事物是不是可数?【英文标题】: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);
这种功能存在吗?我错过了什么吗?
【问题讨论】:
也许是***.com/questions/12346479/… ?与$var instanceof Countable
@Scuzzy 的方式是一个好的开始,也许值得尝试看看是否可以遍历:php.net/manual/en/class.traversable.php
php.net/manual/en/function.count.php
好消息。看起来 PHP 7.3 的目标是为此 wiki.php.net/rfc/is-countable 提供内置函数
【参考方案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
【讨论】:
以上是关于如何检查某事物是不是可数?的主要内容,如果未能解决你的问题,请参考以下文章
NumPy 类型提示某事物既是数组又是 float32? [复制]