(PHP 4, PHP 5, PHP 7, PHP 8)
count — Подсчитывает количество элементов массива или Countable объекте
Подсчитывает все элементы в массиве, если используется массив. Если используется объект, который реализует интерфейс Countable, функция возвращает результат выполнения метода Countable::count().
value
Массив или объект, реализующий Countable.
mode
Если необязательный параметр mode
установлен в
COUNT_RECURSIVE
(или 1), count()
будет рекурсивно подсчитывать количество элементов массива.
Это особенно полезно для подсчёта всех элементов многомерных
массивов.
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)