Sizeof: примеры (PHP)

Полное руководство по работе с sizeof в PHP
Раздел: Работа с массивами
sizeof(Countable|array value [, int mode]): int
Описание функции sizeof

sizeof в PHP - это псевдоним функции count(). Она используется для получения количества элементов в массиве или количества публичных свойств объекта.

Когда используется

Функция применяется для определения размера массива или подсчета элементов в объекте, реализующем интерфейс Countable. Это одна из наиболее часто используемых функций для работы с массивами.

Аргументы функции
  • $value (обязательный) - массив или объект, реализующий Countable.
  • $mode (опциональный) - константа, определяющая режим подсчета:
    • COUNT_NORMAL или 0 - подсчет элементов верхнего уровня (по умолчанию).
    • COUNT_RECURSIVE или 1 - рекурсивный подсчет всех элементов многомерного массива.
Краткие примеры использования
Базовый пример с массивом
$fruits = ['apple', 'banana', 'orange'];
echo sizeof($fruits);
3
Пример с COUNT_RECURSIVE
$data = ['fruits' => ['apple', 'banana'], 'vegetables' => ['carrot']];
echo sizeof($data, COUNT_RECURSIVE);
5
Пример с объектом Countable
class MyCollection implements Countable {
    private $items = [1, 2, 3, 4];
    public function count(): int {
        return count($this->items);
    }
}
$collection = new MyCollection();
echo sizeof($collection);
4
Похожие функции в PHP
Функция count()

count() - это полный аналог sizeof(). Они идентичны во всех аспектах. Использование count() считается более предпочтительным в современном коде из-за лучшей читаемости.

Функция iterator_count()

iterator_count() подсчитывает элементы в итераторе. Используется для объектов, реализующих интерфейс Traversable, но не Countable.

$arrayIterator = new ArrayIterator([1, 2, 3]);
echo iterator_count($arrayIterator);
3
Типичные ошибки
Применение к несуществующей переменной
// Переменная $undefined не существует
echo sizeof($undefined);
Warning: sizeof(): Parameter must be an array or an object that implements Countable
Подсчет неитерируемых типов
$string = 'test';
echo sizeof($string);
1

Для строк sizeof() всегда возвращает 1, что может ввести в заблуждение.

Неправильная интерпретация рекурсивного подсчета
$data = ['a' => [1, 2], 'b' => 3];
echo sizeof($data, COUNT_RECURSIVE);
4

Многие ожидают результат 3, но функция считает все скалярные элементы и подмассивы.

Изменения в последних версиях PHP
PHP 8.0

В PHP 8.0 улучшена обработка недопустимых аргументов. Теперь при передаче неподдерживаемого типа генерируется ошибка типа TypeError, а не предупреждение.

// В PHP 7.4
sizeof(null); // Возвращает 0 с предупреждением

// В PHP 8.0
sizeof(null); // TypeError: sizeof(): Argument #1 ($value) must be of type Countable|array
Расширенные примеры
Сравнение режимов подсчета
Пример php
$multiArray = [
    'group1' => ['A', 'B', 'C'],
    'group2' => ['D', 'E'],
    'single' => 'F'
];

$normal = sizeof($multiArray);
$recursive = sizeof($multiArray, COUNT_RECURSIVE);

echo "Нормальный режим: $normal<br>";
echo "Рекурсивный режим: $recursive";
Нормальный режим: 3
Рекурсивный режим: 7
Работа с SPL объектами
Пример php
$stack = new SplStack();
$stack->push('first');
$stack->push('second');
$stack->push('third');

echo sizeof($stack);
3
Использование с array_filter
Пример php
$numbers = [1, 2, 3, 4, 5, 6];
$evenNumbers = array_filter($numbers, fn($n) => $n % 2 === 0);

echo "Всего четных: " . sizeof($evenNumbers);
Всего четных: 3
Проверка пустых структур
Пример php
$emptyArray = [];
$nullValue = null;

$result1 = sizeof($emptyArray);
// $result2 = sizeof($nullValue); // Вызовет TypeError в PHP 8+

echo "Пустой массив: $result1";
Пустой массив: 0
Аналоги в других языках

Sizeof в Python

В Python используется функция len() для последовательностей и коллекций. Она работает со строками, списками, словарями и другими типами.

fruits = ['apple', 'banana', 'orange']
print(len(fruits))
3

Sizeof в Javascript

В JavaScript у массивов есть свойство length. Для подсчета элементов объекта можно использовать Object.keys(obj).length.

let fruits = ['apple', 'banana', 'orange'];
console.log(fruits.length);
3

Sizeof в MySQL

В SQL для подсчета строк используется агрегатная функция COUNT() в запросах.

SELECT COUNT(*) as total FROM users;

PHP sizeof function comments

En
Sizeof Alias of count