count

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

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

Описание

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

Функция подсчитывает количество элементов в массиве, если в функцию передали массив. Функция возвращает значение, которое вернул метод 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)

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

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