PHP 8.0.0 Released!

is_countable

(PHP 7 >= 7.3.0)

is_countable Verify that the contents of a variable is a countable value

Descrierea

is_countable ( mixed $var ) : bool

Verify that the contents of a variable is an array or an object implementing Countable

Parametri

var

The value to check

Valorile întoarse

Returns TRUE if var is countable, FALSE otherwise.

Istoricul schimbărilor

Versiune Descriere
7.3.0 is_countable() has been added.

Exemple

Example #1 is_countable() examples

<?php
var_dump
(is_countable([123])); // 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)

A se vedea și

  • is_array() - Determină dacă o variabilă este un array
  • is_object() - Determină dacă o variabilă este un obiect
  • is_iterable() - Verify that the contents of a variable is an iterable value
  • is_bool() - Determină dacă o variablă este un boolean

add a note add a note

User Contributed Notes 6 notes

up
36
info at arisendrake dot de
2 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
4
renic
1 year 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
1
danmichaelo at gmail dot com
1 year ago
Note that a polyfill for this method is also provided by the symfony/polyfill project.
up
0
info at ensostudio dot ru
1 month 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!
?>
up
0
Anonymous
1 month 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
-8
deoomen
1 year 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);
    }
}
?>
To Top