PHP — Многомерные массивы
Когда элементы массива сами являются массивами, одним или несколькими, перед вами многомерный массив.
PHP позволяет вкладывать их на два, три, четыре, пять уровней и глубже. Однако на практике большинству людей трудно управляться со структурами глубже трёх уровней.
PHP — Двумерные массивы
Двумерный массив — это просто массив, элементы которого являются массивами. Добавьте ещё один слой, чтобы внутренние массивы содержали собственные массивы, и вы получите трёхмерный массив.
Такая форма подходит для данных, представленных строками и столбцами. Вот как это выглядит:
Доступ к элементам двумерного массива
Чтобы прочитать значение из $cars, нужны два индекса: первый для строки таблицы, второй для столбца:
Вывод: PHP-скрипт
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
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>";
?>
Определение двумерного массива
Каждый внутренний массив — это одна строка таблицы с маркой, количеством на складе и количеством проданных автомобилей:
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
?>
PHP — Перебор многомерных массивов
Для прохода по многомерному массиву нужен цикл for или foreach.
Число измерений показывает, сколько индексов нужно, чтобы добраться до одного элемента:
- Два измерения — два индекса
- Три измерения — три индекса
Перебор вложенными циклами for
Цикл for, вложенный в другой такой же цикл, обходит каждый элемент $cars. Внешний проходит по строкам таблицы, внутренний по столбцам, и к каждому элементу по-прежнему обращаются с помощью обоих индексов:
Вывод: PHP-скрипт
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
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>";
}
?>
Перебор вложенными циклами foreach
Вложенные циклы foreach справляются с той же задачей без номеров индексов. На этот раз значения выводятся в виде HTML-таблицы:
Вывод: PHP-скрипт
<?php
$cars = array (
array("Volvo", 22, 18),
array("BMW", 15, 13),
array("Saab", 5, 2),
array("Land Rover", 17, 15)
);
echo "<table>";
echo "<tr><th>Марка</th><th>В наличии</th><th>Продано</th></tr>";
foreach ($cars as $row) {
echo "<tr>";
foreach ($row as $cell) {
echo "<td>" . $cell . "</td>";
}
echo "</tr>";
}
echo "</table>";
?>