Перевод статьи Джонатана Босенджера «PHP Array Length Tutorial – How to Get an Array Size«.

Что такое массив в PHP?

Массивы — это мощный тип данных в PHP. А умение быстро определять размер массива — полезный навык.

В этой статье я дам вам краткий обзор того, как работают массивы, а затем я расскажу, как получить размер массивов PHP.

Прежде чем мы углубимся в определение размера массива, нам нужно убедиться, что мы понимаем, что такое массив. Массив в PHP — это тип переменной, который позволяет хранить более одного фрагмента данных.

Например, если вы храните простую строку, вы должны использовать строковый тип PHP:

$heading = 'PHP Array Length Tutorial';

Однако, если вы хотите хранить еще несколько фрагментов отдельных данных, вы можете рассмотреть возможность использования дополнительных строковых переменных.

$heading = 'PHP Array Length Tutorial';
$subheading = 'How to get an array size';
$author = 'Jonathan Bossenger'

Это все хорошо, но что, если вам нужно сохранить больше данных и быстро вызвать любой из этих элементов в другом месте вашего кода? Вот здесь и пригодится массив. Вы по-прежнему можете хранить отдельные фрагменты данных, но с использованием одной переменной.

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

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

echo $post_data[0];

В PHP ключи массива начинаются с 0 (нуля).

Для еще большего контроля массивы также позволяют вам определять свои собственные ключи массива, используя строки.

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

Это позволяет вам также ссылаться на элемент массива по его строковому ключу.

echo $post_data['heading'];

Вы также можете определять массивы, используя новую нотацию коротких массивов, которая похожа на JavaScript:

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

Массивы также могут быть вложенными, образуя более сложные переменные массива:

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

И вы можете вызвать конкретное значение массива, используя его вложенный ключ:

echo $post_data['author']['name'];

Однако, если вы регулярно делаете это, вы можете подумать об использовании объектов, а не массивов.

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

Помещая эти фрагменты данных в массив, вы определяете меньше переменных, и это может облегчить чтение и понимание вашего кода в дальнейшем. Также намного проще передать одну переменную массива другой функции, чем передать несколько строк.

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

$filtered_post_data = filter_post_data($post_data)

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

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

Самый популярный способ — использовать функцию 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(), которая является более подходящим названием для того, что вы делаете — подсчета элементов в массиве.

Спасибо! Надеюсь, теперь вы понимаете, как определить размер массива в PHP.

Статьи #