Как узнать количество элементов в массиве PHP

Раздел: Основы PHP -> Операции с массивами в PHP

Основные способы подсчета элементов массива в PHP

Основное эффективное решение: функция count() и её синоним sizeof()

Функция count() возвращает количество элементов в массиве. Это самый быстрый и универсальный способ. Для обычных одномерных массивов используется без дополнительных флагов.

$arr = ['яблоко', 'банан', 'вишня'];
echo count($arr); // 3

Php массив добавление (добавить элемент в массив в php)

Для многомерного массива требуется флаг COUNT_RECURSIVE, чтобы подсчитать все элементы на всех уровнях вложенности.

$multi = [
    ['a', 'b'],
    ['c', 'd', 'e']
];
echo count($multi, COUNT_RECURSIVE); // 7 (2 внешних + 5 внутренних)

Php отсортировать массив (отсортировать массив в php)

Типичные ошибки:

  • Забыть указать COUNT_RECURSIVE для многомерного массива - результат будет равен количеству подмассивов, а не всех элементов.
  • Передать не массив - в PHP 8+ count() выбросит TypeError, в более старых версиях вернёт 1 для скаляров.

Как вручную подсчитать элементы без встроенных функций?

Иногда нужно обойтись без count(), например, для учебных целей или при написании собственных алгоритмов.

$arr = [10, 20, 30];
$i = 0;
foreach ($arr as $item) {
    $i++;
}
echo $i; // 3

Php перебор массива (перебрать массив в php)

Проблемы:

  • Цикл foreach изменяет внутренний указатель массива, но это не влияет на подсчёт.
  • Такой способ медленнее count(), особенно на больших массивах.

Как подсчитать количество вхождений каждого значения?

Функция array_count_values() возвращает ассоциативный массив, где ключи - уникальные значения исходного массива, а значения - их количество.

$fruits = ['яблоко', 'банан', 'яблоко', 'вишня', 'банан', 'банан'];
$counted = array_count_values($fruits);
print_r($counted);
/*
Array
(
    [яблоко] => 2
    [банан] => 3
    [вишня] => 1
)
*/

Php конец массива (получить последний элемент массива в php)

Проблемы:

  • Функция работает только со строковыми и целочисленными значениями. Попытка передать массив или объект вызовет предупреждение.

Как подсчитать сумму значений элементов?

Для числовых массивов удобна array_sum(), которая складывает все значения.

$numbers = [10, 20, 30];
echo array_sum($numbers); // 60

посчитать массив php (посчитать элементы массива в php)

Если массив ассоциативный - значения тоже суммируются, ключи игнорируются.

$assoc = ['a' => 5, 'b' => 15];
echo array_sum($assoc); // 20

преобразовать массив в строку php (преобразовать массив в строку в php)

Ошибка:

  • Нечисловые значения приводятся к числу (строки конвертируются), что может дать неожиданный результат.

Как подсчитать произведение элементов?

Аналог array_sum() для умножения - array_product().

$nums = [2, 3, 4];
echo array_product($nums); // 24

наличие в массиве php (проверить наличие элемента в массиве в php)

Для пустого массива возвращает 1.

Как подсчитать количество элементов, удовлетворяющих условию?

Используется array_filter() с callback, затем count().

$numbers = [1, 2, 3, 4, 5, 6];
$even = array_filter($numbers, fn($v) => $v % 2 === 0);
echo count($even); // 3 (2, 4, 6)

Php разбить строку на массив (разбить строку на массив в php)

Можно также применить array_reduce() для более сложных правил.

$numbers = [1, 2, 3, 4];
$sumOfSquares = array_reduce($numbers, fn($carry, $v) => $carry + ($v * $v), 0);
echo $sumOfSquares; // 30

Типичная ошибка:

  • Забыть, что array_filter() сохраняет ключи. Если ключи не являются последовательными числами, результат может быть неожиданным при индексированном доступе.

Расширенные примеры подсчета элементов массивов

Пример 1: Подсчет элементов ассоциативного массива с помощью count()

Пример
$user = [
    'name' => 'Иван',
    'age' => 30,
    'city' => 'Москва'
];
echo count($user); // 3
Результат: 3

Функция одинаково работает с индексированными и ассоциативными массивами.

Пример 2: Сравнение производительности count() и sizeof()

Пример
$bigArray = range(1, 1000000);
$start = microtime(true);
$c = count($bigArray);
$time = microtime(true) - $start;
echo "count(): $time сек";

$start = microtime(true);
$s = sizeof($bigArray);
$time = microtime(true) - $start;
echo "sizeof(): $time сек";
Обе функции практически идентичны по скорости. sizeof() - псевдоним count(), поэтому разницы нет.

Пример 3: Подсчет элементов с помощью array_keys() и count()

Пример
$array = ['id' => 1, 'title' => 'Тест', 'status' => 'active'];
$keys = array_keys($array);
echo count($keys); // 3

Этот способ избыточен, но полезен, если нужно проверить, что массив не ассоциативный (ключи - числа).

Пример 4: Рекурсивный подсчет многомерного массива с разной глубиной

Пример
$deep = [
    'a' => [1, 2, [3, 4]],
    'b' => [5, 6]
];
// Без COUNT_RECURSIVE
echo count($deep); // 2
// С COUNT_RECURSIVE
echo count($deep, COUNT_RECURSIVE); // 8 (2 внешних + 2 элемента в 'a' + 2 в подмассиве + 2 в 'b' = 8)
2
8

Флаг COUNT_RECURSIVE перебирает все вложенные массивы. Будьте осторожны: бесконечная рекурсия не возникает, так как массивы конечны.

Пример 5: Подсчет элементов с обработкой ошибок при передаче скаляра

Пример
function safeCount($value): int {
    return is_array($value) ? count($value) : 0;
}

echo safeCount('строка'); // 0
echo safeCount([1,2,3]); // 3

В современных проектах лучше типизировать входные параметры и использовать строгие типы (declare(strict_types=1)).

Пример 6: Подсчет уникальных значений через array_unique и count

Пример
$duplicates = [1, 2, 2, 3, 3, 3];
$unique = array_unique($duplicates);
echo count($unique); // 3
3

Комбинация с array_unique полезна для подсчета уникальных элементов.

Посчитать элементы массива в PHP - comments

En
посчитать массив php (php)