Перевод статьи Джонатана Босенджера “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.