Перед тем, как изучать синтаксис работы с массивами, стоит понять его суть на логическом уровне. Для этого достаточно здравого смысла. Массивом в программировании считают любые списки или коллекции элементов, будь то курсы на Хекслете, сайты в поисковой выдаче, друзья в вашей любимой социальной сети. Задача массива — представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым.
<?php
$animals = ['cats', 'dogs', 'birds'];
Массив представляет собой список элементов, заключенных в квадратные скобки. В примере выше происходит определение массива ['cats', 'dogs', 'birds']
и присваивание его переменной $animals
. PHP позволяет создавать массив из разнотипных данных, то есть чисто технически можно создать и такой массив:
<?php
$values = [null, 'one', 4, 'two', false];
На практике такой подход лучше не использовать. Для разнотипных данных обычно, хорошо подходит ассоциативный массив, которому посвящен следующий курс.
Кроме того, можно создать и пустой массив:
<?php
$animals = [];
Как правило, пустой массив используют в ситуации, когда мы работаем с коллекцией, но значения отсутствуют. Такой подход позволяет избежать условных проверок на то, является ли данное значение массивом. Либо его используют в алгоритмах, которые постепенно наполняют массив в процессе своей работы.
(Для любознательных: массив в PHP — динамическая структура. Ее можно расширять прямо в процессе работы программы. В языках близких к железу, таких как Си, размер массива — постоянная величина. При необходимости расширения в подобных языках создают новый массив).
Каждый элемент в массиве имеет порядковый номер, называемый индексом. Индексация массива начинается с нуля. То есть первый элемент массива доступен по индексу 0
, второй — по индексу 1
, и так далее.
Для извлечения элемента из массива, необходимо использовать специальный синтаксис. Он заключается в том, что после переменной, содержащей массив, ставятся квадратные скобки с индексом между ними:
<?php
$animals = ['cats', 'dogs', 'birds'];
$animals[0]; // cats
$animals[1]; // dogs
$animals[2]; // birds
Обратите внимание: последний индекс в массиве всегда меньше размера массива на единицу. Получить размер массива можно функцией count
(у нее есть псевдоним: sizeof
):
<?php
$animals = ['cats', 'dogs', 'birds'];
count($animals); // 3
В алгоритмических задачах индекс обычно вычисляется динамически, поэтому обращение к конкретному элементу происходит с использованием переменных:
<?php
$i = 1;
$animals = ['cats', 'dogs', 'birds'];
$animals[$i]; // dogs
И даже так:
<?php
$i = 1;
$j = 1;
$animals = ['cats', 'dogs', 'birds'];
$animals[$i + $j]; // birds
Такой вызов возможен по одной простой причине. Внутри скобок ожидается выражение, и, как мы уже знаем, там, где ожидается выражение, можно подставлять все, что вычисляется, в том числе вызовы функций.
Довольно часто в задачах с использованием массивов нужно взять последний элемент. Для этого вычисляется последний индекс массива по формуле размер_массива - 1
, по которому и можно обратиться к последнему элементу:
<?php
$animals = ['cats', 'dogs', 'birds'];
$animals[count($animals) - 1]; // birds
Индекс последнего элемента вычисляется по формуле: размер массива - 1
. Соответственно, в коде она реализуется так: count($animals) - 1
. На практике очень напрягает каждый раз писать такой код, поэтому через некоторое время мы познакомимся со специальной библиотекой, позволяющей работать с коллекциями намного более эффективно по сравнению со стандартными средствами.
Здесь все просто. Синтаксис такой же, как и при обращении к элементу массива с добавлением присвоения нового значения:
<?php
$animals = ['cats', 'dogs', 'birds'];
$animals[0] = 'horses';
print_r($animals); // => ['horses', 'dogs', 'birds']
Также не забывайте про выход за границу. Изменять нужно только существующие элементы.
То же самое, что и изменение, но в качестве индекса ничего не указывается.
<?php
$animals = ['cats', 'dogs', 'birds'];
$animals[] = 'horses';
print_r($animals); // => ['cats', 'dogs', 'birds', 'horses']
Для удаления элемента массива в PHP есть специальная языковая конструкция unset
.
<?php
$animals = ['cats', 'dogs', 'birds'];
unset($animals[1]);
print_r($animals); // => ['cats', 'birds']
Синтаксически ее применение выглядит как функция, но если вы попробуете использовать ее как выражение, то PHP выдаст ошибку:
<?php
$animals = ['cats', 'dogs', 'birds'];
$result = unset($animals[1]); // PHP Parse error: syntax error, unexpected 'unset' ...
В общем случае уменьшение размера массива — нежелательная операция. Подробнее об этом поговорим в соответствующем уроке.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт