На этом шаге мы рассмотрим создание и использование многомерных массивов.
До этого момента в качестве элементов массива мы использовали только числа и строки. На самом деле элементом массива может быть все что угодно, даже другие массивы. Выглядит это следующим образом:
$lang = array ("Петров" => array ("Английский", "Испанский", "Немецкий"), "Иванов" => array ("Французский", "Итальянский"), "Сидоров" => array ("Немецкий"));
Это пример инициализации двумерного массива, где в качестве элементов выступают обычные (одномерные) массивы. Он содержит информацию о знании иностранных языков. Мы можем еще более усложнить структуру, если в качестве элементов внутреннего массива возьмем еще один массив, тогда это уже будет трехмерный массив. При желании так можно продолжать очень долго, но на практике обычно останавливаются на трехмерном массиве.
Обращение к элементам внутреннего массива происходит следующим образом:
$lang["Петров"][0];
В данном случае мы обращаемся к первому элементу массива, который, в свою очередь, является первым элементом массива $lang, то есть к строке Английский.
Обход многомерных массивов можно также производить с помощью конструкции foreach. При этом мы будем иметь дело с вложенными циклами. Например:
<?php $lang = array ("Петров" => array ("Английский", "Испанский", "Немецкий"), "Иванов" => array ("Французский", "Итальянский"), "Сидоров" => array ("Немецкий")); foreach ($lang as $key=>$value) { echo $key."<br>"; // вывод элементов foreach ($value as $sub_key=>$sub_value) { echo $sub_key." ".$sub_value."<br>"; // вывод элементов } echo "<br>"; } ?>
Результат выполнения этой программы смотрите на рисунке 1.
Рис.1. Результат работы скрипта
Итак, во внешнем цикле переменная $key будет принимать значения индексов внешнего массива, то есть строки Петров, Иванов, Сидоров, а переменная $value - внутренние массивы. Переменные $sub_key и $sub_value работают уже непосредственно с ключами и значениями внутренних массивов.
На следующем шаге мы рассмотрим преобразование значений переменных в массив.