Шаг 56.
Основы языка PHP.
Многомерные массивы

    На этом шаге мы рассмотрим создание и использование многомерных массивов.

    До этого момента в качестве элементов массива мы использовали только числа и строки. На самом деле элементом массива может быть все что угодно, даже другие массивы. Выглядит это следующим образом:

$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 работают уже непосредственно с ключами и значениями внутренних массивов.

    На следующем шаге мы рассмотрим преобразование значений переменных в массив.




Предыдущий шаг Содержание Следующий шаг