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