КаталогBuilderPHPDocs

Глава 5. Массивы в PHP

Массивы — одна из самых часто используемых структур данных в PHP. Через них передаются настройки, результаты SQL-запросов, списки товаров, меню сайта, параметры формы и ответы API. Если хорошо понять массивы, большая часть обычной PHP-разработки станет заметно проще.

Современное примечание. В старых учебниках массивы часто объяснялись только через функцию array(). Сегодня удобнее использовать короткий синтаксис [], но старый вариант по-прежнему встречается в проектах DLE, WordPress и самописных CMS.

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

Индексированный массив хранит значения по числовым ключам. Если ключи не указаны, PHP назначает их автоматически с нуля.

$languages = ['PHP', 'JavaScript', 'SQL'];
echo $languages[0]; // PHP

Ассоциативные массивы

Ассоциативный массив использует строковые ключи. Это удобно для хранения данных пользователя, настроек или параметров страницы.

$user = [
    'name' => 'Алексей',
    'role' => 'admin',
    'active' => true,
];

echo $user['name'];

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

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

$posts = [
    ['title' => 'Первая статья', 'views' => 120],
    ['title' => 'Вторая статья', 'views' => 80],
];

echo $posts[0]['title'];

Перебор массива

Для вывода элементов чаще всего используется foreach. Он читабелен и безопаснее ручного перебора по индексам, особенно если массив ассоциативный.

foreach ($posts as $post) {
    echo '<h2>' . htmlspecialchars($post['title']) . '</h2>';
}

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

Добавить элемент можно через пустые квадратные скобки. Удаление выполняется функцией unset(). Важно помнить, что unset() не пересчитывает числовые ключи автоматически.

$languages[] = 'Python';
unset($languages[1]);

Для проверки существования ключа лучше использовать array_key_exists() или isset(). Разница важна: isset() вернёт false, если значение равно null.

if (array_key_exists('role', $user)) {
    echo 'Роль указана';
}

Сортировка

PHP содержит много функций сортировки. sort() пересчитывает числовые ключи, asort() сохраняет связи ключ-значение, ksort() сортирует по ключам. В реальных проектах нужно выбирать функцию исходя из структуры данных.

$prices = ['basic' => 100, 'pro' => 300, 'free' => 0];
asort($prices);

Практический пример

Ниже простой пример подготовки списка пунктов меню. Такой подход легко расширить: добавить URL, CSS-класс, права доступа или активный пункт.

$menu = [
    ['title' => 'Главная', 'url' => '/'],
    ['title' => 'Учебник PHP', 'url' => '/uchebnik-php-soderzhanie.html'],
];

foreach ($menu as $item) {
    echo '<a href="' . htmlspecialchars($item['url']) . '">' .
         htmlspecialchars($item['title']) .
         '</a>';
}

Типичные ошибки

  • Обращение к несуществующему ключу без проверки.
  • Смешивание числовых и строковых ключей без необходимости.
  • Хранение сложной бизнес-логики прямо внутри массива настроек.
  • Вывод данных из массива без htmlspecialchars().

Итоги

Массивы в PHP — базовый инструмент для хранения и передачи данных. Начинающему разработчику важно уверенно работать с индексированными, ассоциативными и многомерными массивами, понимать foreach, проверку ключей и сортировку. Эти навыки пригодятся в любой CMS, API или самописном проекте.