Размер массива

Обычно, когда мы говорим о размере массива, мы говорим о том, сколько элементов существует в этом массиве. Есть два распространенных способа получить размер массива.

Самый популярный способ — использовать функцию PHP count(). Как сказано в названии функции, count() вернет количество элементов массива. Но то, как мы используем функцию count(), зависит от структуры массива.

Давайте посмотрим на два примера массивов, которые мы определили ранее.

$post_data = array(
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => 'Jonathan Bossenger'
);

echo count($post_data);

В этом примере count($post_data) приведет к 3. Это связано с тем, что в этом массиве есть 3 элемента: «заголовок», «подзаголовок» и «автор». Но как насчет нашего второго примера вложенного массива?

$post_data = [
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => [
		'name' => 'Jonathan Bossenger',
		'twitter' => 'jon_bossenger',
	]
];
echo count($post_data);

Вы не поверите, но в этом примере count($post_data) также вернет 3. Это связано с тем, что по умолчанию функция count() считает только элементы массива верхнего уровня.

Если вы посмотрите на определение функции, вы увидите, что оно принимает два аргумента — массив для подсчета и mode. Значением по умолчанию для этого режима является предопределенная константа COUNT_NORMAL, которая сообщает функции, что она должна подсчитывать только элементы массива верхнего уровня.

Если вместо этого мы передадим предопределенную константу COUNT_RECURSIVE, она пройдет через все уровни вложенности и будет их также считать.

$post_data = [
	'heading' => 'PHP Array Length Tutorial',
	'subheading' => 'How to get an array size',
	'author' => [
		'name' => 'Jonathan Bossenger',
		'twitter' => 'jon_bossenger',
	]
];
echo count($post_data, COUNT_RECURSIVE);

Теперь результатом count($post_data, COUNT_RECURSIVE) будет, как и ожидалось, 5.

«Но подождите!» — слышу ваше недоумение. «Вы упомянули, что есть другой способ?».

Да, вы можете использовать еще одну функцию — sizeof(). Однако sizeof() — это просто псевдоним count(), и многие люди правильно предполагают, что sizeof() вернет использование памяти массивом.

Поэтому лучше использовать count(), которая является более подходящим названием для того, что вы делаете — подсчета элементов в массиве.

Была ли эта страница полезной?