(PHP 4, PHP 5, PHP 7, PHP 8)
count — Подсчитывает количество элементов в массиве или в объекте Countable
Функция подсчитывает количество элементов в массиве, если в функцию передали массив. Функция возвращает значение, которое вернул метод Countable::count(), если в функцию передали объект, который реализует интерфейс Countable.
value
Массив или объект, который реализует интерфейс Countable.
mode
Функция count() будет рекурсивно подсчитывать элементы массива, если для необязательного параметра mode
установили значение COUNT_RECURSIVE
(или 1). Это, в частности, полезно для подсчёта элементов многомерных массивов.
Функция count() умеет обнаруживать рекурсию, чтобы избежать бесконечного цикла, но для каждого такого случая будет выдавать ошибку уровня E_WARNING
(если массив содержит себя больше одного раза), и возвращать значение выше, чем ожидалось.
Функция возвращает количество элементов в параметре value
. До PHP 8.0.0, если параметр не был ни массивом (array), ни объектом (object), который реализует интерфейс Countable, возвращалось значение 1
, если значение параметра value
не было равно null
, тогда возвращалось значение 0
.
Версия | Описание |
---|---|
8.0.0 | Функция count() теперь выбрасывает исключение TypeError, если в параметр value функции передали недопустимый исчисляемый тип. |
7.2.0 | Функция count() теперь будет выдавать предупреждение о недопустимых исчисляемых типах, которые передали в параметр value . |
Пример #1 Пример использования функции count()
<?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));
?>
Результат выполнения приведённого примера:
int(3) int(3)
Пример #2 Пример использования функции count() с неисчисляемым типом (плохой пример — не делайте так)
<?php
$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
var_dump(count($b));
var_dump(count(null));
var_dump(count(false));
?>
Результат выполнения приведённого примера:
int(3) int(0) int(1)
Результат выполнения приведённого примера в 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)
Результат выполнения приведённого примера в PHP 8:
int(3) Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable .. on line 12
Пример #3 Пример рекурсивного использования функции count()
<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));
// рекурсивный подсчёт
var_dump(count($food, COUNT_RECURSIVE));
// обычный подсчёт
var_dump(count($food));
?>
Результат выполнения приведённого примера:
int(8) int(2)
Пример #4 Объект, который реализует интерфейс Countable
<?php
class CountOfMethods implements Countable
{
private function someMethod() {}
public function count(): int
{
return count(get_class_methods($this));
}
}
$obj = new CountOfMethods();
var_dump(count($obj));
?>
Результат выполнения приведённого примера:
int(2)