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

В предыдущих главах этого руководства мы уже знаем, что массивы — это простые списки пар типа "ключ/значение".

Однако, иногда вам нужно хранить значения с помощью одного или нескольких ключей.

Можно хранить данные с помощью многомерных массивов.

PHP - многомерные массивы

Многомерные массивы — это массивы, которые содержат один или несколько массивов.

PHP понимает двумерные, трёхмерные, четырёхмерные и даже пятимерные и более глубокие многомерные массивы. Однако, массивы глубже трёх уровней часто трудно управлять для большинства людей.

Комментарий:Размерность массива указывает, сколько индексов вам нужно для выбора элемента.

  • Для двумерных массивов вам нужны два индекса для выбора элемента
  • Для трёхмерных массивов вам нужны три индекса для выбора элемента

PHP - двумерные массивы

Двумерные массивы являются массивами массивов (трёхмерные массивы — это массивы массивов массивов).

Давайте посмотрим на следующую таблицу:

Бренд Запас Продажи
Volvo 33 20
BMW 17 15
Saab 5 2
Land Rover 15 11

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

$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

Теперь эта двумерная матрица содержит четыре массива и имеет два индекса (индексы): строка и столбец.

Чтобы получить элементы массива $cars, нам нужно использовать два индекса (строка и столбец):

Пример

<?php
echo $cars[0][0].": Запас: ".$cars[0][1].", Продажи: ".$cars[0][2].".<br>";
echo $cars[1][0].": Запас: ".$cars[1][1].", Продажи: ".$cars[1][2].".<br>";
echo $cars[2][0].": Запас: ".$cars[2][1].", Продажи: ".$cars[2][2].".<br>";
echo $cars[3][0].": Запас: ".$cars[3][1].", Продажи: ".$cars[3][2].".<br>";
?>

Запуск примера

Мы также можем использовать один For-循环 в другом For-цикле, чтобы получить элементы массива $cars (мы все еще должны использовать два индекса):

Пример

<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Номер строки $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>

Запуск примера