- Что такое массив
- Как получать данные
- Как менять элементы массива
- Как добавлять элементы в массив
- Как удалять элементы из массива
Перед тем, как мы начнем изучать синтаксис работы с массивами, разберемся в его сути на логическом уровне. Массивом в программировании считают любые списки или коллекции элементов — курсы на Хекслете, сайты в поисковой выдаче, друзья в вашей любимой социальной сети. Задача массива — представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым. В этом уроке мы обсудим эту тему подробнее, чтобы лучше подготовиться к следующим темам.
Что такое массив
Массив — это список элементов, заключенный в квадратные скобки:
<?php
$animals = ['cats', 'dogs', 'birds'];
В этом примере мы определяем массив ['cats', 'dogs', 'birds']
и присваиваем его переменной $animals
. PHP позволяет создавать массив из разнотипных данных, то есть можно создать и такой массив:
<?php
$values = [null, 'one', 4, 'two', false];
На практике такой подход лучше не использовать. Обычно для разнотипных данных хорошо подходит ассоциативный массив, которому посвящен другой курс.
Кроме того, можно создать и пустой массив:
<?php
$animals = [];
Обычно пустой массив используют при работе с коллекцией, у которой отсутствуют значения. Такой подход позволяет не тратить время на условные проверки того, является ли это значение массивом. Еще пустые массивы используют в алгоритмах, которые постепенно наполняют массив в процессе своей работы.
Массив в PHP — динамическая структура. Ее можно расширять прямо в процессе работы программы. Размер массива — это постоянная величина в языке C и других языках, близких к железу. Если массив нужно расширить, в таких языках обычно создают новый массив.
Как получать данные
Каждый элемент в массиве имеет порядковый номер — индекс. Индексация массива начинается с нуля: первый элемент доступен по индексу 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' ...
В общем случае уменьшение размера массива — это нежелательная операция. Подробнее об этом поговорим в соответствующем уроке.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.