Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Синтаксис

Перед тем как изучать синтаксис работы с массивами, стоит понять его суть на логическом уровне. Для этого достаточно здравого смысла. Массивом в программировании представляют любые списки (коллекции элементов), будь то курсы на Хекслете либо сайты в поисковой выдаче или друзья в вашей любимой социальной сети. Задача массива представить такие списки в виде единой структуры, которая позволяет работать с ними как с единым целым.

Определение массива

<?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' ...

В общем случае уменьшение размера массива — нежелательная операция. Подробнее об этом поговорим в соответствующем уроке.


Дополнительные материалы

  1. Официальная документация

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Для полного доступа к курсу, нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, даст возможность обращаться за помощью к менторам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг».