is_countable

(PHP 7 >= 7.3.0, PHP 8)

is_countable Verifica se o conteúdo de uma variável é um valor contável

Descrição

is_countable(mixed $value): bool

Verifica se o conteúdo de uma variável é um array ou um objeto que implementa a classe Countable

Parâmetros

value

O valor a ser verificado

Valor Retornado

Retorna true se value for contável, false caso contrário.

Changelog

Versão Descrição
7.3.0 A função is_countable() foi adicionada.

Exemplos

Exemplo #1 Exemplos de is_countable()

<?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)

Veja Também

  • is_array() - Verifica se a variável é um array
  • is_object() - Verifica se uma variável é um objeto
  • is_iterable() - Verifica se o conteúdo de uma variável é um valor iterável
  • is_bool() - Verifica se a variável é um booleano

add a note

User Contributed Notes 7 notes

up
46
info at arisendrake dot de
5 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);
}
}
?>
up
3
renic
4 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().
up
2
danmichaelo at gmail dot com
4 years ago
Note that a polyfill for this method is also provided by the symfony/polyfill project.
up
1
Anonymous
3 years 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);
}
}
?>
up
1
zhaoyifans at gmail dot com
11 months ago
polyfill:

function is_countable($value) {
return is_array($value)
|| $value instanceof Countable
|| $value instanceof ResourceBundle
|| $value instanceof SimpleXmlElement;
}
up
-11
deoomen
4 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);
}
}
?>
up
-7
info at ensostudio dot ru
3 years 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!
?>
To Top