count

(PHP 4, PHP 5, PHP 7, PHP 8)

countПодсчитывает количество элементов массива или Countable объекте

Описание

count(Countable|array $value, int $mode = COUNT_NORMAL): int

Подсчитывает все элементы в массиве, если используется массив. Если используется объект, который реализует интерфейс 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)

Смотрите также

  • is_array() - Определяет, является ли переменная массивом
  • isset() - Определяет, была ли установлена переменная значением, отличным от null
  • empty() - Проверяет, пуста ли переменная
  • strlen() - Возвращает длину строки
  • is_countable() - Проверить, что содержимое переменной является счётным значением
  • Массивы