is_countable
(PHP 7 >= 7.3.0, PHP 8)
is_countable — Verify that the contents of a variable is a countable value
说明
Verify that the contents of a variable is an array or an object implementing Countable
参数
-
value
-
The value to check
返回值
Returns true
if value
is countable, false
otherwise.
更新日志
版本 | 说明 |
---|---|
7.3.0 | is_countable() has been added. |
范例
示例 #1 is_countable() examples
<?php
var_dump(is_countable([1, 2, 3])); // bool(true)
var_dump(is_countable(new ArrayIterator(['foo', 'bar', 'baz']))); // bool(true)
var_dump(is_countable(new ArrayIterator())); // bool(true)
var_dump(is_countable(new stdClass())); // bool(false)
参见
- is_array() - 检测变量是否是数组
- is_object() - 检测变量是否是一个对象
- is_iterable() - Verify that the contents of a variable is an iterable value
- is_bool() - 检测变量是否是布尔值

User Contributed Notes 6 notes
info at arisendrake dot de ¶
3 years ago
If you are unable to upgrade to PHP 7.3 (not released at the time of writing), you can use this simple polyfill:
<?php
if (!function_exists('is_countable')) {
function is_countable($var) {
return (is_array($var) || $var instanceof Countable);
}
}
?>
renic ¶
3 years ago
be wary of using is_object($var) and assuming that the object has implemented Countable. Not all objects are countable directly with count().
Anonymous ¶
1 year ago
Fixed polyfill:
<?php
if (! function_exists('is_countable')) {
/**
* @param mixed $value The value to check
* @return bool
*/
function is_countable($value): bool
{
return is_array($value) || (is_object($value) && $value instanceof Countable);
}
}
?>
danmichaelo at gmail dot com ¶
3 years ago
Note that a polyfill for this method is also provided by the symfony/polyfill project.
info at ensostudio dot ru ¶
1 year ago
Note: if is_countable() return true is does not guarantee that the it can be calculated recursively and correctly:
<?php
$iterator = new ArrayIterator(['one', 'two', new ArrayIterator(['three', 'four'])]);
var_dump(is_countable($iterator), count($iterator, COUNT_RECURSIVE));
// return TRUE and 3!
?>
deoomen ¶
3 years ago
Polyfill written by arisendrake is not quite good. It return FALSE when checking an Simple XML Node but count() works properly on PHP 7.1 and 7.3.
Better is this one:
<?php
if (version_compare(PHP_VERSION, "7.3") < 0 && !function_exists("is_countable")) {
function is_countable($var): bool
{
return (is_array($var) || is_object($var) || is_iterable($var) || $var instanceof Countable);
}
}
?>
备份地址:http://www.lvesu.com/blog/php/function.is-countable.php