Объявление массива в php, виды массивов и работа с элементами. Создание массивов в PHP. Простой, многомерный, ассоциативный Многомерный ассоциативный массив php

Давайте разберемся, что же такое массив в PHP. Массив – это просто группа каких-то значений, представленных как единое целое. Представьте себе корзину с фруктами. В ней лежат банан, апельсин, яблоко и виноград. В PHP можно представить такую структуру в виде массива. Корзина – это сам массив, а конкретные фрукты – это его элементы.

Давайте теперь создадим в папке с нашим проектом файл для наших экспериментов с массивами. Назовём его arrays.php .

Объявляется массив в PHP с помощью квадратных скобок, вот так:

Вот так мы создали пустой массив.

В старом коде можно встретить пример такого определения массива:

$fruits = array();

Сейчас такая запись является устаревшей, использовать её не стоит!

Можно также создать массив, в котором уже будут какие-либо значения. Это делается так:

$fruits = ["apple", "orange", "grape"];

Вывести получившийся массив можно с помощью уже известной нам функции var_dump:

И давайте запустим этот наш скрипт, открыв в браузере: http://myproject.loc/arrays.php
Мы увидим следующее:

C:\OpenServer\domains\myproject.loc\www\arrays.php:4: array (size=3) 0 => string "apple" (length=5) 1 => string "orange" (length=6) 2 => string "grape" (length=5)

Нумерованные массивы

Array – это тип объекта, а именно массив. Size=3 – это размерность массива (содержит 3 элемента). 0, 1, 2 – это ключи массива , которые также называются индексами . По этим ключам хранятся значения, в нашем случае эти значения – строки. Как мы можем видеть, ключи массива нумеруются с нуля, и далее просто увеличиваются на единицу.

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

Например, чтобы получить нулевой элемент массива (с ключом 0), мы должны сделать следующее:

Результат этого кода:

Давайте получим элемент с индексом 2:

Результат:

Если же мы попытаемся получить элемент с несуществующим индексом, например – 3:

То мы получим warning о том, что элемент с таким ключом не найден.

Добавление и удаление элементов массива

Давайте добавим ещё один элемент в массив, для этого используется следующая конструкция:

$fruits = "mango";

Давайте после этого снова посмотрим на наш массив с помощью var_dump:

Результат – ещё один элемент с индексом 3:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 0 => string "apple" (length=5) 1 => string "orange" (length=6) 2 => string "grape" (length=5) 3 => string "mango" (length=5)

Для удаления элементов массива используется конструкция unset. Давайте удалим элемент с индексом 2:

Результат этого кода:

C:\OpenServer\domains\myproject.loc\www\arrays.php:9: array (size=3) 0 => string "apple" (length=5) 1 => string "orange" (length=6) 3 => string "mango" (length=5)

Как мы видим, элемента с индексом 2 больше нет, и образовалась «дырка» в порядковых номерах ключей. Если теперь добавить новый элемент, то у него индекс будет равен 4, но эта дыра по-прежнему останется. Это работает именно так и об этом нужно помнить.

И снова вернёмся к ключам

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

Результат:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: array (size=3) 5 => string "apple" (length=5) 3 => string "orange" (length=6) 9 => string "grape" (length=5)

Как мы видим, ключи теперь – это 5, 3 и 9.
Если теперь добавить элемент в массив, то у него будет индекс, на единицу больше максимального числового значения ключа:

Результат:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 5 => string "apple" (length=5) 3 => string "orange" (length=6) 9 => string "grape" (length=5) 10 => string "mango" (length=5)

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

Результат:

C:\OpenServer\domains\myproject.loc\www\arrays.php:7: array (size=4) 5 => string "apple" (length=5) 3 => string "orange" (length=6) 9 => string "grape" (length=5) 20 => string "mango" (length=5)

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

Результат:

C:\OpenServer\domains\myproject.loc\www\arrays.php:5: array (size=3) 5 => string "apple" (length=5) 3 => string "orange" (length=6) 9 => string "grape" (length=5) C:\OpenServer\domains\myproject.loc\www\arrays.php:9: array (size=3) 5 => string "mango" (length=5) 3 => string "orange" (length=6) 9 => string "grape" (length=5)

Ассоциативные массивы

Помимо числовых ключей можно использовать обычные строки. Такие массивы называются ассоциативными. Давайте представим такую ситуацию: есть какая-то статья, у неё есть название, текст и автор. Её можно легко представить в виде массива. Сделаем это:

"Название статьи", "text" => "Текст статьи"]; $article["author"] = "Имя автора"; var_dump($article);

Результат работы этого кода:

C:\OpenServer\domains\myproject.loc\www\arrays.php:6: array (size=3) "title" => string "Название статьи" (length=29) "text" => string "Текст статьи" (length=23) "author" => string "Имя автора" (length=19)

Отлично, а теперь мы можем использовать это внутри HTML-разметки:

"Название статьи", "text" => "Текст статьи", "author" => "Автор статьи" ]; ?> <?= $article["title"] ?>

Результат:

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

Помните, в начале урока я сказал, что по ключам массива хранятся какие-то значения, и в нашем случае это строки. Так вот, элементом массива, вообще говоря, может являться что угодно. Даже сам массив. =)

"Название статьи", "text" => "Текст статьи", "author" => [ "first_name" => "Иван", "last_name" => "Иванов" ] ]; var_dump($article);

Результат:

C:\OpenServer\domains\myproject.loc\www\arrays.php:10: array (size=3) "title" => string "Название статьи" (length=29) "text" => string "Текст статьи" (length=23) "author" => array (size=2) "first_name" => string "Иван" (length=8) "last_name" => string "Иванов" (length=12)

Вот так всё просто, article – это массив, у которого по ключу author – тоже находится массив.
Чтобы получить имя автора нужно использовать следующий код:

"Название статьи", "text" => "Текст статьи", "author" => [ "first_name" => "Иван", "last_name" => "Иванов" ] ]; echo $article["author"]["first_name"];

Сначала в массиве $article получили значение по ключу author, этим значением оказался массив. А затем уже из этого массива получили значение по ключу first_name. И результат этого кода, разумеется:

Иван

Давайте теперь используем эти значения в уже использованном нами шаблоне:

"Название статьи", "text" => "Текст статьи", "author" => [ "first_name" => "Иван", "last_name" => "Иванов" ] ]; ?> <?= $article["title"] ?>

Результат:

Разумеется, можно и внутри этого значения создать массив, а внутри него – ещё один, пока не надоест.

В следующем уроке мы рассмотрим более сложные и интересные примеры работы с массивами.

Массив - это структура данных, которая сохраняет один или несколько одинаковых значений в одном значении. Например, если вы хотите сохранить 100 номеров, то вместо определения 100 переменных легко определить массив длиной 100.

Существует три разных типа массивов, и каждое значение массива доступно с помощью идентификатора c, который называется индексом массива.

  • Числовой массив - массив с числовым индексом. Значения хранятся и доступны линейным образом.
  • Ассоциативный массив - массив со строками в качестве индекса. Это сохраняет значения элементов в сочетании с ключевыми значениями, а не строгим линейным порядком индекса.
  • Многомерный массив . Доступ к массиву, содержащему один или несколько массивов и значений, осуществляется с использованием нескольких индексов

Числовой массив

Эти массивы могут хранить числа, строки и любой объект, но их индекс будет представлен числами. По умолчанию индекс массива начинается с нуля.

Пример

Ниже приведен пример создания и доступа к числовым массивам.

Здесь мы использовали функцию array() для создания массива. Эта функция объясняется в описании функций.

Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Value is one
Value is two
Value is three
Value is four
Value is five

Ассоциативные массивы

Ассоциативные массивы очень похожи на числовые массивы с точки зрения функциональности, но они различаются по индексу. Ассоциативный массив будет иметь свой индекс как строку, чтобы вы могли установить сильную связь между ключом и значениями.

Чтобы хранить зарплаты сотрудников в массиве, числовой индексный массив не был бы лучшим выбором. Вместо этого мы могли бы использовать имена сотрудников в качестве ключей в нашем ассоциативном массиве, и значение было бы их соответствующей зарплатой.

ПРИМЕЧАНИЕ . Не сохраняйте ассоциативный массив внутри двойной кавычки во время печати, иначе он не вернет никакого значения.

Пример

2000, "qadir" => 1000, "zara" => 500); echo "Salary of mohammad is ". $salaries["mohammad"] . " "; echo "Salary of qadir is ". $salaries["qadir"]. " "; echo "Salary of zara is ". $salaries["zara"]. " "; /* Second method to create array. */ $salaries["mohammad"] = "high"; $salaries["qadir"] = "medium"; $salaries["zara"] = "low"; echo "Salary of mohammad is ". $salaries["mohammad"] . " "; echo "Salary of qadir is ". $salaries["qadir"]. " "; echo "Salary of zara is ". $salaries["zara"]. " "; ?>

Это приведет к следующему результату -

Salary of mohammad is 2000
Salary of qadir is 1000
Salary of zara is 500
Salary of mohammad is high
Salary of qadir is medium
Salary of zara is low

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

Многомерный массив каждый элемент в основном массиве также может быть массивом. И каждый элемент в sub-массиве может быть массивом и так далее. Значения в многомерном массиве доступны с использованием нескольких индексов.

Пример

В этом примере мы создаем двухмерный массив для хранения меток трех студентов по трем предметам. Этот пример представляет собой ассоциативный массив, вы можете создать числовой массив таким же образом.

array ("physics" => 35, "maths" => 30, "chemistry" => 39), "qadir" => array ("physics" => 30, "maths" => 32, "chemistry" => 29), "zara" => array ("physics" => 31, "maths" => 22, "chemistry" => 39)); /* Accessing multi-dimensional array values */ echo "Marks for mohammad in physics: " ; echo $marks["mohammad"]["physics"] . " "; echo "Marks for qadir in maths: "; echo $marks["qadir"]["maths"] . " "; echo "Marks for zara in chemistry: " ; echo $marks["zara"]["chemistry"] . " "; ?>

Это приведет к следующему результату -

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

Массивы PHP – Что такое массивы PHP и как они создаются. Простые (индексные) массивы

Массивы в PHP играют очень важную роль и повсеместно используются при построении сайтов. Массив – это так называемая переменная (), которая может содержать несколько значений доступных по определенным индексам. Для доступа к информации массива достаточно просто указать имя массива и индекс ячейки с данными. Для наглядности приведу пример структуры простого индексного массива и переменной.

Как видно с изображения, разница между массивом и переменной не очень большая. Переменная может принимать только одно значение, а массив сразу несколько. При этом для того, чтобы вытащить информацию с массива, достаточно просто указать имя массива и индекс, по которому доступна информация. Для более полного понимания давайте рассмотрим пример и создадим массив, после чего вытащим с него информацию и выведем на экран.

/*Создание массива*/ $name = "A"; $name = "B"; $name = "C"; $name = "D"; $name = "E"; /*Вывод значения ячейки массива с индексом 2 на экран*/ echo $name;

В примере выше видно, что сначала мы создаем первый элемент массива с индексом «0» и присваиваем ему значение «А». Затем аналогичным образом создаем остальные 4 элемента массива. После этого при помощи оператора echo мы выводим третий элемент массива на экран. Как вы уже заметили, для того, чтобы вывести элемент массива на экран, нужно указать имя массива и индекс ячейки с данными.

Кроме вышеприведенного способа, массив в php можно создать другим способом. Суть его состоит в использовании ключевого слова array . Для наглядности давайте рассмотрим тот же пример создания массива, но уже другим способом.

$name = array (0 => "A", 1 => "B", 2 => "C", 3 => "D", 4 => "E");

Этот способ тоже очень простой. Для создания массива мы создаем переменную $name, затем ставим знак присваивания «=» и указываем что это массив (array). После этого создаем ячейки и заполняем их данными. Делается это при помощи указания индекса и присвоения ему значения при помощи знаков «=» и «>». То есть «0 => «A»» означает, что ячейке с индексом «0» мы присваиваем значение «А». Немного неудобно объяснять эту тему текстово но, думаю, вы поняли о чем идет речь.

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

Первый вариант создания массивов в PHP

$name = "A"; $name = "B"; $name = "C"; $name = "D"; $name = "E";

Второй вариант создания массивов в PHP

$name = array("A", "B", "C", "D", "E");

Ассоциативные массивы PHP

Ассоциативные массивы есть еще одной разновидностью массивов PHP. Отличием ассоциативных массивов от простых являются индексы. Если в простых массивах это были числовые индексы, то ассоциативных эти индексы текстовые. Это делает ассоциативные массивы более упорядоченными и осмысленными. Благодаря этому они более широко применяются нежели простые индексные.

Создаются ассоциативные массивы аналогичным образом. Рассмотрим 2 основных способа.

Первый способ создания ассоциативного массива.

$color["white"] = "белый"; $color["black"] = "черный"; $color["red"] = "красный"; $color["green"] = "зеленый"; $color["blue"] = "синий";

Второй способ создания ассоциативного массива.

$color = array("white" => "белый", "black" => "черный", "red" => "красный", "green" => "зеленый", "blue" => "синий");

Как видите процедура создания ассоциативного массива индентична процедуре создания индексного. Для того чтобы вывести элемент массива на экран, мы можем использовать известный нам . Рассмотрим два способа – обычный и при помощи пристыковки переменных.

Echo "Выбранный цвет - $color"; echo "Выбран ".$color["red"]." цвет";

Как вы уже заметили, в первом случае индекс ячейки не берется в двойные кавычки. Это правило стоит сразу запомнить, во избежание ошибок в будущем. Если вы используете первый способ и хотите вывести элемент массива без пристыковки переменных, то индекс в кавычки не берется. Во втором примере, как видите, все пишется как обычно и кавычки не убираются.

Лично мне больше нравится первый способ, так как он, на мой взгляд, намного проще второго и требует меньше движений на реализацию. Все же выбирать вам, какой способ вы будете использовать.

Теперь давайте перейдем к заключительной части статьи и рассмотрим многомерные массивы PHP.

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

Многомерный массив – это массив, который содержит в себе еще один массив. Для наглядности давайте реализуем многомерный массив на примере трех разновидностей компьютеров. В нашем случае это стационарный компьютер, ноутбук и нетбук. В качестве характеристик будут объем оперативной памяти, объем жесткого диска и частота процессора. Схематически многомерный массив PHP для решения данной задачи может выглядеть следующим образом.

Создать многомерный массив, как и все остальные, можно несколькими способами. С целью экономии времени, рассмотрим только второй способ. Думаю, вы уже успели запомнить, как создаются массивы в PHP и у вас не должно возникнуть никаких проблем с этим.

$massiv["Стационарный ПК"] = array ("ОЗУ" => "4096", "HDD" => "500", "ГЦ" => "3"); $massiv["Ноутбук"] = array ("ОЗУ" => "3072", "HDD" => "320", "ГЦ" => "2"); $massiv["Нетбук"] = array ("ОЗУ" => "2048", "HDD" => "250", "ГЦ" => "1,6");

Для того чтобы в PHP вывести элемент многомерного массива на экран достаточно использовать оператор вывода echo и метод пристыковки переменных, так как в противном случае (без пристыковки переменных) элемент многомерного массива не выведется на экран. Это еще одно отличие при работе с многомерными массивами PHP.

Echo "Стационарный ПК с объемом ОЗУ ".$massiv["Стационарный ПК"]["ОЗУ"]." и объемом жесткого диска ".$massiv["Стационарный ПК"]["HDD"]." имеет частоту процессора " .$massiv["Стационарный ПК"]["ГЦ"]. " ГЦ.";

Теперь давайте подведем итог всему вышесказанному.

В рамках данной статьи мы рассмотрели три вида массивов – индексные, ассоциативные и многомерные. Узнали, как создавать массивы в PHP, а также как вытаскивать элемент массива и выводить его на экран. Были рассмотрены основы по работе с массивами, а также некоторые правила по выводу элементов на экран.

На этом данная статья подходит к концу. Если вы не хотите пропустить последних обновлений блога, вы можете подписаться на новостную рассылку любым удобным для вас способом в пункте « » либо воспользоваться формой ниже.

На этом все. Удачи вам и до скорых встреч на страницах блога

Элементы массива в PHP могут содержать значения любого типа, такие как числа, строки, объекты. Они также могут содержать и другие массивы, что фактически означает создание многомерного или вложенного массива.

В данном уроке рассматриваются многомерные (вложенные) массивы PHP. Объясняется, как их создать, как ими манипулировать, как организовать цикл по всему многомерному массиву в PHP.

Как создать многомерный массив

Создать многомерный массив можно с помощью конструкции array() , что очень похоже на создание обычного массива. Разница заключается в том, что в многомерном массиве каждый элемент также является массивом.

Например:

$myArray = array(array(value1 , value2 , value3), array(value4 , value5 , value6), array(value7 , value8 , value9));

В выше приведённом примере создаётся двумерный массив. Массив верхнего уровня содержит 3 элемента. Каждый элемент также является массивом, содержащим 3 значения.

Также можно использовать ассоциативный массив в качестве многомерного массива. Следующий пример демонстрирует создание индексированного массива, который содержит 3 ассоциативных массива:

$movies = array(array("title" => "Rear Window", "director" => "Alfred Hitchcock", "year" => 1954), array("title" => "Full Metal Jacket", "director" => "Stanley Kubrick", "year" => 1987), array("title" => "Mean Streets", "director" => "Martin Scorsese", "year" => 1973));

Можно вкладывать массивы один в другой настолько глубоко, насколько нужно (хотя на практике глубина вложенности редко бывает больше 3-х уровней). В примере ниже демонстрируется 3-х мерный массив:

$myArray = array(array(array(value1 , value2), array(value3 , value4)), array(array(value5 , value6), array(value7 , value8)));

Доступ к элементам в многомерном массиве

Для получения доступа к элементам многомерного массива можно использовать синтаксис "квадратных скобок", который используется для работы с обычным массивом. Если нужно получить доступ к элементам второго уровня в двумерном массиве нужно просто использовать второй набор квадратных скобок, например:

$myArray = array(array("один", "два", "три"), array("четыре", "пять", "шесть")); // Выводим "шесть" echo $myArray; ?>

А вот пример, который демонстрирует доступ к различным элементам многомерного массива $movies , который мы создали раньше:

Echo "Название первого фильма:
"; echo $movies["title"] . "

"; echo "Режисер третьего фильма:
"; echo $movies["director"] . "

"; echo "Вложенный массив, который содержится в первом элементе:
"; print_r($movies); echo "

";

Выполнение кода выдаст следующий результат:

Название первого фильма: Rear Window Режисер третьего фильма: Martin Scorsese Вложенный массив, который содержится в первом элементе: Array ( => Rear Window => Alfred Hitchcock => 1954)

Последний пример использует $movies для организации доступа ко всему вложенному массиву в первом элементе массива верхнего уровня, а затем используется функция print_r() для вывода содержимого массива.

Организация перебора всех элементов многомерного массива в цикле

Так же, как и для обычного одномерного массива можно использовать foreach для организации перебора всех элементов многомерного массива. Нужно создать вложенный цикл foreach , то есть один цикл внутри другого:

  1. Внешний цикл берет каждый элемент массива верхнего уровня..
  2. Для каждого элемента верхнего уровня внутренний цикл перебирает вложенный массив, и так далее.

В примере создаётся 2-у мерный массив с информацией по фильмам, а затем организуется цикл по элементам массива для вывода информации на страницу:

$movies = array(array("title" => "Rear Window", "director" => "Alfred Hitchcock", "year" => 1954), array("title" => "Full Metal Jacket", "director" => "Stanley Kubrick", "year" => 1987), array("title" => "Mean Streets", "director" => "Martin Scorsese", "year" => 1973)); foreach ($movies as $movie) { echo "

"; foreach ($movie as $key => $value) { echo "
$key
$value
"; } echo "
"; }

Выполнение данного кода выдаст следующий результат:

Title Rear Window director Alfred Hitchcock year 1954 title Full Metal Jacket director Stanley Kubrick year 1987 title Mean Streets director Martin Scorsese year 1973

Резюме

Многомерные массивы подходят для хранения любых данных, например, для хранения множественных записей баз данных или значений для отображения в таблицах. Использование многомерных массивов может повысить уровень функциональности скриптов PHP.

Последнее обновление: 1.11.2015

Массивы предназначены для хранения наборов данных или элементов. Каждый элемент в массиве имеет свой уникальный ключ и значение. Итак, сохраним в массив список моделей телефонов:

"; ?>

Здесь создается массив $phones из четыре элементов. Каждый элемент в массиве представляет собой пару ключ - значение . Так, первый элемент $phones = "Nokia N9" имеет ключ - число 0, а значение - строку "Nokia N9". В таких массивах числовые ключи еще называются индексами.

С помощью функции count() можно узнать количество элементов в массиве. А благодаря тому, что ключи идут по порядку от 0 до 3, и зная размер массива, можно вывести элементы массивы в цикле for .

Чтобы было более понятно отношения ключей и значений элементов, выведем массив с помощью функции print_r :

Print_r($phones);

У нас получится следующий вывод:

Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Данное создание массива будет также эквивалентно следующему:

"; ?>

Если не указывается ключ элемента, то PHP в качестве ключей использует числа. При этом нумерация ключей начинается с нуля, а каждый новый ключ увеличивается на единицу.

Зная ключ элемента в массиве, мы можем обратиться к этому элементу, получить или изменить его значение:

// получим элемент по ключу 1 $myPhone = $phones; echo "$myPhone
"; // присвоение нового значения $phones = "Samsung X650"; echo "$phones
";

Но в качестве ключей могут использоваться не только целые числа, но и строки:

Подобные массивы еще называют ассоциативными.

Оператор array

Выше был рассмотрен один способ создания массива. Но есть и другой, который предусматривает применение оператора array() .

Оператор array() принимает набор элементов. Здесь также явным образом не указаны ключи. Поэтому PHP автоматически нумерует элементы с нуля. Но мы также можем указать для каждого элемента ключ:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>

Операция => позволяет сопоставить ключ с определенным значением.

Перебор ассоциативных массивов

Выше мы посмотрели, как с помощью цикла for вывести все элементы массива, где ключи заданы последовательно числами от 0 до 3. Однако с ассоциативными массивами это не работает. И для них в PHP предназначен специальный тип цикла - foreach...as :

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $item) echo "$item
"; ?>

В цикле foreach из массива последовательно извлекаются все элементы и их значение помещается в переменную, указанную после ключевого слова as . В данном случае в переменную $item по очереди помещаются все четыре значения из массива $phones. Когда будет извлечен последний элемент из массива, цикл завершается.

Цикл foreach позволяет извлекать не только значения, но и ключи элементов:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $key=>$value) echo "$key => $value
"; ?>

Здесь при переборе элементов цикла в переменную $key будет передаваться ключ элемента, а в переменную $value ее значение.

Альтернативу циклу foreach представляет использование функций list и each :

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); while (list($key, $value) = each($phones)) echo "$key => $value
"; ?>

Цикл while будет работать, пока функция each не вернет значение false . Функция each проходит по всем элементам массива $phones и получает его в виде массива, в который входят ключ и значение элемента. Затем этот массив передается функции list и проиcходит присваивает значения массива переменным внутри скобок. Когда функция each закончит перебор элементов массива $phones, она возвратит false , и действие цикла while будет завершено.

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

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

array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"), "sony" => array("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones as $brand => $items) { echo "

$brand

"; echo "
    "; foreach ($items as $key => $value) { echo "
  • $value
  • "; } echo "
"; } ?>

И при выводе мы получим 4 списка:

Чтобы обратиться к элементу данного, также надо указать ключи в квадратных скобках. Например, обратимся к первому элементу в первом массиве. Так как ключ первого массива - "apple", а ключ первого элемента в первом массиве - число 0 (так как мы явным образом не указали ключи):

Echo $phones["apple"];

Подобным образом можно получить второй элемент третьего массива:

Echo $phones["nokia"];

Допустим, вложенные массивы также представляют ассоциативные массивы:

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablets" => array("lenovo" => "Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air")); foreach ($technics as $tovar => $items) { echo "

$tovar

"; echo "
    "; foreach ($items as $key => $value) { echo "
  • $key: $value
  • "; } echo "
"; } // присвоим одному из элементов другое значение $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // выведем это значение echo $technics["phones"]["nokia"]; ?>