Урок 10: Массивы в PHP (индексированные и многомерные массивы)

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

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

Массив это структура данных, которая хранит набор значений под одним именем.
Представьте, что у вас есть список задач на день:

  • Позавтракать
  • Почитать книгу
  • Заняться программированием

Вместо создания трех отдельных переменных ($task1$task2$task3), вы можете использовать массив:

$tasks = ['Позавтракать', 'Почитать книгу', 'Заняться программированием'];

Теперь все задачи хранятся в одной переменной, и с ними удобно работать!

Индексированные массивы

Индексированные массивы это массивы, где каждый элемент имеет числовой индекс (ключ), начинающийся с 0. Давайте разберемся, как их создавать и использовать.

Создание массива

В PHP есть два способа создать массив:

  1. Функция array()
$fruits = array('Яблоко', 'Банан', 'Апельсин');
  1. Короткий синтаксис [] (доступен с PHP 5.4)
$fruits = ['Яблоко', 'Банан', 'Апельсин'];

Оба варианта работают одинаково, но короткий синтаксис более современный и удобный.

Доступ к элементам

Чтобы получить элемент массива, укажите его индекс в квадратных скобках:

echo $fruits[0]; // Выведет: Яблоко  
echo $fruits[2]; // Выведет: Апельсин  

Важно: Индексы начинаются с 0!

Изменение элементов

Массивы можно изменять:

$fruits[1] = 'Груша';  
echo $fruits[1]; // Теперь здесь Груша вместо Банана  

Добавление элементов

Новые элементы добавляются через указание следующего индекса:

$fruits[] = 'Манго'; // Автоматически получит индекс 3  
echo $fruits[3]; // Выведет: Манго  

Пример: Вывод массива через цикл

Часто массивы перебирают в циклах. Например, через foreach:

foreach ($fruits as $fruit) {  
    echo $fruit . '<br>';  
}

Результат:

Яблоко  
Груша  
Апельсин  
Манго

Многомерные массивы

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

Пример: Список студентов с оценками

Допустим, мы хотим хранить данные студентов: имя и их оценки по математике и физике.
Создадим двумерный массив:

$students = [  
    ['Иван', 5, 4],  
    ['Мария', 4, 5],  
    ['Петр', 3, 4]  
];

Каждый элемент $students — это массив с данными студента.

Доступ к элементам

Чтобы получить оценку Марии по математике (первый предмет), обращаемся по индексам:

echo $students[1][1]; // Выведет: 4  

Объяснение:

  • $students[1] — это второй студент (Мария).
  • [1] — второй элемент в её массиве (оценка по математике).

Пример: Вывод данных через цикл

Используем вложенный цикл foreach:

foreach ($students as $student) {  
    echo 'Студент: ' . $student[0] . '<br>';  
    echo 'Математика: ' . $student[1] . '<br>';  
    echo 'Физика: ' . $student[2] . '<br><br>';  
}

Результат:

Студент: Иван  
Математика: 5  
Физика: 4  

Студент: Мария  
Математика: 4  
Физика: 5  

Студент: Петр  
Математика: 3  
Физика: 4

Практические задачи

Теперь закрепим знания на практике. Решайте задачи по порядку.

Задача 1: Список дней недели

  1. Создайте индексированный массив $days с названиями дней недели.
  2. Выведите третий день недели.
  3. Замените четвертый день на «Среда-2» (шутка, так не бывает, но для тренировки сойдет).
  4. Выведите весь массив через цикл.

Решение:

$days = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'];  
echo $days[2]; // Среда  
$days[3] = 'Среда-2';  
foreach ($days as $day) {  
    echo $day . '<br>';  
}

Задача 2: Магазин продуктов

  1. Создайте массив $products с товарами и их ценами:
    • Хлеб — 50 руб.
    • Молоко — 80 руб.
    • Яйца — 120 руб.
  2. Добавьте новый товар «Сыр» за 200 руб.
  3. Рассчитайте общую стоимость всех товаров.

Решение:

$products = [  
    ['Хлеб', 50],  
    ['Молоко', 80],  
    ['Яйца', 120]  
];  
$products[] = ['Сыр', 200];  

$total = 0;  
foreach ($products as $product) {  
    $total += $product[1];  
}  
echo "Общая стоимость: $total руб."; // 450 руб.  

Задача 3: Многомерный массив книг

  1. Создайте массив $books, где каждая книга имеет:
    • Название
    • Автора
    • Год издания
  2. Выведите данные в формате:
    "Название" (Автор, Год)

Решение:

$books = [  
    ['1984', 'Джордж Оруэлл', 1949],  
    ['Мастер и Маргарита', 'Михаил Булгаков', 1966],  
    ['Гарри Поттер', 'Джоан Роулинг', 1997]  
];  

foreach ($books as $book) {  
    echo "\"{$book[0]}\" ({$book[1]}, {$book[2]})<br>";  
}

Советы

  • Используйте ассоциативные массивы для удобства. О них мы поговорим в следующем уроке, но уже сейчас знайте, они позволяют использовать строковые ключи вместо чисел (например, 'имя' => 'Мария').
  • Проверяйте существование элементов. Прежде чем обращаться к индексу, убедитесь, что он есть в массиве:
    if (isset($fruits[5])) {  
        echo $fruits[5];  
    }
  • Не бойтесь экспериментировать. Создавайте сложные структуры и пробуйте их выводить.

Чтобы продолжить обучение, переходите к следующему уроку: курс по PHP для начинающих.