Массивы в PHP
Массив — это упорядоченный набор значений под одним именем. Вместо десяти переменных $user1, $user2, $user3… достаточно одного массива $users. В PHP массивы особенно гибкие: они умеют работать и как списки, и как «словари» с ключами.
Создание массива
Современный синтаксис — квадратные скобки (старый array() тоже работает, но скобки короче):
<?php
$fruits = ["яблоко", "банан", "вишня"];
print_r($fruits);
// Вывод: Array ( [0] => яблоко [1] => банан [2] => вишня )
Каждый элемент получает числовой индекс, отсчёт начинается с нуля. Обращение к элементу — по индексу в квадратных скобках:
<?php
$fruits = ["яблоко", "банан", "вишня"];
echo $fruits[0]; // Вывод: яблоко
echo $fruits[2]; // Вывод: вишня
$fruits[1] = "груша"; // заменяем элемент
echo $fruits[1]; // Вывод: груша
Добавление и удаление элементов
<?php
$fruits = ["яблоко"];
$fruits[] = "банан"; // добавить в конец
array_push($fruits, "вишня"); // то же самое функцией
array_unshift($fruits, "лимон"); // добавить в начало
print_r($fruits);
// Вывод: Array ( [0] => лимон [1] => яблоко [2] => банан [3] => вишня )
array_pop($fruits); // удалить последний
array_shift($fruits); // удалить первый
print_r($fruits);
// Вывод: Array ( [0] => яблоко [1] => банан )
Ассоциативные массивы
Вместо чисел ключами могут быть строки — получается структура «ключ → значение», как анкета:
<?php
$user = [
"name" => "Анна",
"age" => 25,
"city" => "Москва",
];
echo $user["name"]; // Вывод: Анна
echo $user["city"]; // Вывод: Москва
$user["email"] = "[email protected]"; // добавить новый ключ
Ассоциативные массивы — рабочая лошадка PHP: в таком виде приходят данные форм, строки из базы данных и ответы API.
Многомерные массивы
Элементом массива может быть другой массив — так строят таблицы и вложенные структуры:
<?php
$students = [
["name" => "Иван", "score" => 90],
["name" => "Мария", "score" => 85],
];
echo $students[0]["name"]; // Вывод: Иван
echo $students[1]["score"]; // Вывод: 85
Перебор массива
Главный инструмент — цикл foreach, знакомый по прошлой статье:
<?php
$prices = ["хлеб" => 45, "молоко" => 80];
foreach ($prices as $product => $price) {
echo "$product стоит $price руб.\n";
}
// Вывод:
// хлеб стоит 45 руб.
// молоко стоит 80 руб.
Полезные функции для массивов
Размер, проверка, поиск
<?php
$nums = [3, 1, 4, 1, 5];
echo count($nums); // Вывод: 5
var_dump(in_array(4, $nums)); // Вывод: bool(true)
echo array_search(5, $nums); // Вывод: 4 (индекс элемента)
var_dump(array_key_exists(0, $nums)); // Вывод: bool(true)
Сортировка
<?php
$nums = [3, 1, 4, 1, 5];
sort($nums); // по возрастанию
print_r($nums); // Вывод: Array ( [0] => 1 [1] => 1 [2] => 3 [3] => 4 [4] => 5 )
rsort($nums); // по убыванию
print_r($nums); // Вывод: Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 1 [4] => 1 )
Для ассоциативных массивов есть asort() (по значениям, ключи сохраняются) и ksort() (по ключам).
map и filter
Две функции в стиле функционального программирования. array_map() применяет функцию к каждому элементу, array_filter() оставляет только подходящие. Со стрелочными функциями PHP 8 это выглядит очень компактно:
<?php
$prices = [100, 250, 400];
$withTax = array_map(fn($p) => $p * 1.2, $prices);
print_r($withTax);
// Вывод: Array ( [0] => 120 [1] => 300 [2] => 480 )
$expensive = array_filter($prices, fn($p) => $p > 200);
print_r($expensive);
// Вывод: Array ( [1] => 250 [2] => 400 )
Сумма и другие агрегаты
<?php
$nums = [10, 20, 30];
echo array_sum($nums); // Вывод: 60
echo max($nums); // Вывод: 30
echo min($nums); // Вывод: 10
Сводная таблица
| Функция | Что делает |
|---|---|
count() | количество элементов |
in_array() | есть ли значение в массиве |
array_push() / array_pop() | добавить / удалить с конца |
sort() / rsort() | сортировка по возрастанию / убыванию |
array_map() | преобразовать каждый элемент |
array_filter() | отобрать элементы по условию |
array_sum() | сумма элементов |
Что мы узнали
- Массив создаётся квадратными скобками:
$arr = [1, 2, 3], индексация с нуля. - Ассоциативные массивы хранят пары «ключ → значение» и используются в PHP повсюду.
- Массивы могут быть вложенными — так описывают таблицы и сложные структуры.
foreach— основной способ перебора.array_map()иarray_filter()со стрелочными функциямиfn() =>заменяют рутинные циклы.
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.