Counts all elements in an array when used with an array. When used with an object that implements the Countable interface, it returns the return value of the method Countable::count().
value
An array or Countable object.
mode
If the optional mode
parameter is set to
COUNT_RECURSIVE
(or 1), count()
will recursively count the array. This is particularly useful for
counting all the elements of a multidimensional array.
count() can detect recursion to avoid an infinite
loop, but will emit an E_WARNING
every time it
does (in case the array contains itself more than once) and return a
count higher than may be expected.
Returns the number of elements in value
.
Prior to PHP 8.0.0, if the parameter was neither an array nor an object that
implements the Countable interface,
1
would be returned,
unless value
was null
, in which case
0
would be returned.
Version | Description |
---|---|
8.0.0 |
count() will now throw TypeError on
invalid countable types passed to the value parameter.
|
7.2.0 |
count() will now yield a warning on invalid countable types
passed to the value parameter.
|
Example #1 count() example
<?php$a[0] = 1;$a[1] = 3;$a[2] = 5;var_dump(count($a));$b[0] = 7;$b[5] = 9;$b[10] = 11;var_dump(count($b));?>
The above example will output:
int(3) int(3)
Example #2 count() non Countable|array example (bad example - don't do this)
<?php$b[0] = 7;$b[5] = 9;$b[10] = 11;var_dump(count($b));var_dump(count(null));var_dump(count(false));?>
The above example will output:
int(3) int(0) int(1)
Output of the above example in PHP 7.2:
int(3) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12 int(0) Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14 int(1)
Output of the above example in PHP 8:
int(3) Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12
Example #3 Recursive count() example
<?php$food = array('fruits' => array('orange', 'banana', 'apple'), 'veggie' => array('carrot', 'collard', 'pea'));// recursive countvar_dump(count($food, COUNT_RECURSIVE));// normal countvar_dump(count($food));?>
The above example will output:
int(8) int(2)
Example #4 Countable object
<?phpclass CountOfMethods implements Countable{ private function someMethod() { } public function count(): int { return count(get_class_methods($this)); }}$obj = new CountOfMethods();var_dump(count($obj));?>
The above example will output:
int(2)