0Pricing
PHP Academy · Урок

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

Создавайте массивы массивов и перемещайтесь по их структуре.

«Многомерные массивы» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

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

Многомерный массив — это массив, каждый элемент которого сам является массивом. Такие массивы часто используются для структурированных данных, например результатов запросов к базе данных или деревьев конфигурации.

Создание двумерного массива

Создайте и получите доступ к двумерному массиву:

<?php
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

echo $matrix[1][2]; // 6 (row 1, col 2)
$matrix[0][0] = 99;
echo $matrix[0][0]; // 99

Массив ассоциативных массивов

Наборы результатов запросов к базе данных часто представлены массивами ассоциативных массивов:

<?php
$users = [
    ['id' => 1, 'name' => 'Alice', 'role' => 'admin'],
    ['id' => 2, 'name' => 'Bob',   'role' => 'user'],
    ['id' => 3, 'name' => 'Carol', 'role' => 'user'],
];

echo $users[0]['name'];  // Alice
echo count($users);      // 3

Обход двумерных массивов

Используйте вложенные циклы foreach, чтобы обойти все строки и столбцы:

<?php
$products = [
    ['name' => 'Widget', 'price' => 9.99],
    ['name' => 'Gadget', 'price' => 24.99],
];

foreach ($products as $product) {
    echo $product['name'] . ': $' . $product['price'] . PHP_EOL;
}

Безопасный доступ к вложенным ключам

Используйте оператор объединения с NULL, чтобы безопасно обращаться к вложенным ключам, которые могут отсутствовать:

<?php
$config = [
    'database' => ['host' => 'localhost', 'port' => 3306],
    'cache'    => ['driver' => 'redis'],
];

$port     = $config['database']['port'] ?? 3306;
$password = $config['database']['password'] ?? '';

echo $port;     // 3306
echo $password; // (empty)

Добавление во вложенные массивы

Добавляйте элементы глубоко внутри многомерного массива:

<?php
$app = [];
$app['settings']['theme'] = 'dark';
$app['settings']['lang']  = 'en';

$app['users'][] = ['name' => 'Alice'];
$app['users'][] = ['name' => 'Bob'];

echo count($app['users']);       // 2
echo $app['settings']['theme'];  // dark

array_column()

array_column() извлекает один столбец из двумерного массива:

<?php
$users = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Carol'],
];

$names = array_column($users, 'name');
print_r($names); // ['Alice', 'Bob', 'Carol']

// Re-index by id
$byId = array_column($users, null, 'id');
echo $byId[2]['name']; // Bob

Сортировка двумерного массива

Сортируйте строки по значению поля с помощью usort():

<?php
$products = [
    ['name' => 'C Item', 'price' => 30],
    ['name' => 'A Item', 'price' => 10],
    ['name' => 'B Item', 'price' => 20],
];

usort($products, fn($a, $b) => $a['price'] <=> $b['price']);

foreach ($products as $p) {
    echo $p['name'] . PHP_EOL; // A Item, B Item, C Item
}

Рекурсивные операции с array_walk_recursive

Применяйте функцию обратного вызова к каждому конечному элементу вложенного массива с помощью array_walk_recursive():

<?php
$data = ['a' => 'hello', 'b' => ['c' => 'world', 'd' => 'php']];

array_walk_recursive($data, function(&$val) {
    $val = strtoupper($val);
});

print_r($data);
// ['a'=>'HELLO', 'b'=>['c'=>'WORLD','d'=>'PHP']]

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

Многомерные массивы PHP напрямую преобразуются в объекты и массивы JSON:

<?php
$data = [
    'user'    => ['id' => 1, 'name' => 'Alice'],
    'scores'  => [95, 87, 92],
    'active'  => true,
];

$json = json_encode($data, JSON_PRETTY_PRINT);
echo $json;

$decoded = json_decode($json, true); // true = assoc array
echo $decoded['user']['name']; // Alice

array_merge и array_replace для вложенных массивов

array_merge не является рекурсивной; для корректного объединения вложенных массивов используйте array_replace_recursive:

<?php
$defaults = ['db' => ['host' => 'localhost', 'port' => 3306]];
$custom   = ['db' => ['host' => 'production.server.com']];

$config = array_replace_recursive($defaults, $custom);
echo $config['db']['host'];  // production.server.com
echo $config['db']['port'];  // 3306 — preserved from defaults

Быстрая проверка

Какая функция извлекает один столбец значений из двумерного массива?

Итоги: многомерные массивы

Основные положения:

  • Вкладывайте массивы на любую глубину
  • Используйте ?? для безопасного доступа к отсутствующим вложенным ключам
  • array_column() извлекает столбец или переиндексирует массив по ключу
  • usort() с функцией сравнения сортирует по любому полю
  • array_walk_recursive() используется для глубоких преобразований
  • array_replace_recursive() используется для глубокого объединения

Часто задаваемые вопросы

Урок «Многомерные массивы» бесплатный?

Да — полный текст урока «Многомерные массивы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Многомерные массивы»?

Создавайте массивы массивов и перемещайтесь по их структуре. Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Многомерные массивы»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Индексированные и ассоциативные массивы
  2. Многомерные массивы
  3. Сортировка и поиск в массивах
  4. Функции преобразования массивов
← Назад к PHP Academy