Sizeof: примеры (PHP)
sizeof(Countable|array value [, int mode]): intsizeof в PHP - это псевдоним функции count(). Она используется для получения количества элементов в массиве или количества публичных свойств объекта.
Функция применяется для определения размера массива или подсчета элементов в объекте, реализующем интерфейс Countable. Это одна из наиболее часто используемых функций для работы с массивами.
- $value (обязательный) - массив или объект, реализующий Countable.
- $mode (опциональный) - константа, определяющая режим подсчета:
COUNT_NORMALили0- подсчет элементов верхнего уровня (по умолчанию).COUNT_RECURSIVEили1- рекурсивный подсчет всех элементов многомерного массива.
$fruits = ['apple', 'banana', 'orange'];
echo sizeof($fruits);3
$data = ['fruits' => ['apple', 'banana'], 'vegetables' => ['carrot']];
echo sizeof($data, COUNT_RECURSIVE);5
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
count() - это полный аналог sizeof(). Они идентичны во всех аспектах. Использование 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 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$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
$stack = new SplStack();
$stack->push('first');
$stack->push('second');
$stack->push('third');
echo sizeof($stack);3
$numbers = [1, 2, 3, 4, 5, 6];
$evenNumbers = array_filter($numbers, fn($n) => $n % 2 === 0);
echo "Всего четных: " . sizeof($evenNumbers);Всего четных: 3
$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;