Перейти к содержимому

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

  • автор:

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

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

Например, создадим многомерный массив с помощью функции array() :

$families = array(array("Tom", "Alice"), array("Bob", "Kate"));
$families = [["Tom", "Alice"], ["Bob", "Kate"]];

Выше определенный многомерный массив $families является двухмерным (частный случай многомерного массива), который можно представить в виде таблицы:

Tom Alice
Bob Kate

Для элементов данного массива не установлены явным образом ключи, поэтому каждый ключ элемента представляет числовой индекс, которые по умолчанию начинаются с нуля. Поэтому чтобы обратиться к первому элементу массива, надо использовать индекс 0 — $families[0] :

$families = [["Tom", "Alice"], ["Bob", "Kate"]]; print_r($families[0]); // Array ( [0] => Tom [1] => Alice )

Но поскольку элементами массива $families являются вложенные массивы, то чтобы обратиться к элементам внутри этих вложенных массивов, нам необходимо использовать второй индекс — $families[0][0] :

$families = [["Tom", "Alice"], ["Bob", "Kate"]]; echo $families[0][0] . "
"; //Tom echo $families[0][1] . "
"; //Alice echo $families[1][0] . "
"; //Bob echo $families[1][1]; //Kate

То есть выражение $families[0] представляет обращение к первому элементу массива $families — к вложенному массиву [«Tom», «Alice»] , а выражение $families[0][0] представляет обращение к первому элементу вложенного массива, то есть, в данном случае к элементу «Tom».

Перебор многомерного массива:

   METANIT.COM   "; foreach ($family as $user) < echo ""; > echo ""; > ?>
$user

Для перебора применяется цикл foreach . Цикл проходит по всем элементам массива $families, передавая каждый элемент в переменную $family :

foreach ($families as $family)

Однако каждый элемент массива $families, который передается в переменную $family , сам является массивом. И чтобы получить элементы из вложенного массива, применяется вложенный цикл:

foreach ($family as $user)

В итоге при переборе циклом сформируется таблица:

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

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

    «; foreach ($items as $key => $value) < echo "
  • $value»; > echo «

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

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

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

echo $phones["apple"][0];

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

echo $phones["nokia"][1];

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

    «; foreach ($items as $key => $value) < echo "
  • $key : $value»; > echo «

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

Получение и изменение элемента в этом массиве:

// присвоим одному из элементов другое значение $gadgets["phones"]["nokia"] = "Nokia 9"; // выведем это значение echo $gadgets["phones"]["nokia"];

Выше для инициализации массива применялась функция array() , но также можно использовать и сокращенный вариант с квадратными скобками:

$gadgets = [ "phones" => ["apple" => "iPhone 12", "samsumg" => "Samsung S20", "nokia" => "Nokia 8.2"], "tablets" => ["lenovo" => "Lenovo Yoga Smart Tab", "samsung" => "Samsung Galaxy Tab S5", "apple" => "Apple iPad Pro"] ];

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

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

Двумерные массивы

Двумерный массив — массив, который в качестве значений хранит в себе другие массивы. Рассмотрим создание двумерного массива с помощью конструктора array() :

$flowers = array( array("розы", 100 , 15), array("тюльпаны", 60 , 25), array("орхидеи", 180 , 7) );

Массив $flowers содержит три массива. Как вы помните, для доступа к элементам одномерного массива надо указывать имя массива и ключ. То же самое верно и в отношении двумерных массивов, с одним исключением: каждый элемент имеет два ключа: первый для выбора строки, второй для выбора столбца.

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

    «; for ($row = 0; $row < 3; $row++) < echo "
  1. Номер строки $row«; echo «
      «; for ($col = 0; $col < 3; $col++) < echo "
    • «.$flowers[$row][$col].»»; > echo «

    «; echo «»; > echo «

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

$flowers = array( array( "Название" => "розы", "Цена" => 100, "Количество" => 15 ), array( "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ), array( "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ) );

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

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

    «; for ($row = 0; $row < 3; $row++) < echo "
  1. Номер строки $row«; echo «
      «; foreach($flowers[$row] as $key => $value) < echo "
    • «.$value.»»; > echo «

    «; echo «»; > echo «

Необязательно использовать для создания двумерного массива конструктор array() , можно воспользоваться и коротким синтаксисом — квадратными скобками:

$flowers = [ [ "Название" => "розы", "Цена" => 100, "Количество" => 15 ], [ "Название" => "тюльпаны", "Цена" => 60, "Количество" => 25, ], [ "Название" => "орхидеи", "Цена" => 180, "Количество" => 7 ] ];

Трёхмерные массивы

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

Трёхмерный массив характеризует ширину, высоту и глубину. Если представлять двумерный массив в виде таблицы, то трёхмерный добавляет к этой таблице слои. Каждый элемент такого массива будет ссылаться на слой, строку и столбец.

Если немного модифицировать наш массив с цветами, то можно переделать его в трёхмерный. В коде, представленном ниже видно, что трёхмерный массив — массив, содержащий массив массивов:

$flowers = [ [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7], ], [ ["розы", 100 , 15], ["тюльпаны", 60 , 25], ["орхидеи", 180 , 7] ] ];

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

С этой темой смотрят:

  • Числовые массивы
  • Ассоциативные массивы
  • Добавление и удаление элементов массива
  • Перебор элементов массива

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru | razumnikum.ru

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

Значением элемента в массиве может быть другой массив. Таким образом, можно создавать массивы неограниченной вложенности. Создать многомерный можно так:

Здесь мы создали двумерный массив. Можно создать и трехмерный:

$numbers = [1, [3, 2], [3, [4]]]; 

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

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

  • В двумерном массиве для получения доступа к элементам нужно указать два индекса.
  • В трёхмерном массиве для получения доступа к элементам нужно указать три индекса.

Создание многомерных массивов

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

name mob email
Андрей 5689741523 andre@mail.com
Иван 2584369721 ivan@mail.com
Тома 9875147536 toma@mail.com
Ира 1775147536 irina@mail.com

Сохраним данные из таблицы в двумерном массиве:

$favorites = array(
array(«name» => «Андрей»,»mob» => «5689741523»,»email» => «andre@mail.com»),
array(«name» => «Иван»,»mob» => «2584369721»,»email» => «ivan@mail.com»),
array(«name» => «Тома»,»mob» => «9875147536»,»email» => «toma@mail.com»),
array(«name» => «Ира»,»mob» => «1775147536»,»email» => «irina@mail.com»)
);

Теперь двумерный массив $favorites содержит четыре массива и имеет два индекса: строку и столбец.

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

Чтобы понять, как получить доступ к элементам многомерного массива, продолжим использовать аналогию с таблицами. Для получения доступа к элементу многомерного массива нужно сначала указать строку массива, к которой мы хотим получить доступ. Во-вторых, нужно указать столбец в этой строке. Таким образом для доступа к элементу мы указываем имя массива, а затем нужную строку и столбец массива, каждый из которых заключен в квадратные скобки ([]).

Например, чтобы получить доступ к телефону Ивана в нашем массиве $favorites, мы должны указать на два индекса (строку и столбец):

Пример
 $favorites = array(); 
$favorites[0] = array("name" => "Андрей","mob" => "5689741523","email" => "andre@mail.com");
$favorites[1] = array("name" => "Иван","mob" => "2584369721","email" => "ivan@mail.com");
$favorites[2] = array("name" => "Тома","mob" => "9875147536","email" => "toma@mail.com");
$favorites[3] = array("name" => "Ира","mob" => "1775147536","email" => "irina@mail.com");

echo $favorites[1]["mob"];
?>

Результат выполнения кода:

2584369721

Этот же пример можно переписать так:

$favorites = array (
array(«Андрей»,5689741523,»andre@mail.com»),
array(«Иван»,2584369721,»ivan@mail.com»),
array(«Тома»,9875147536,»toma@mail.com»),
array(«Ира»,1775147536,»irina@mail.com»)
);
echo $favorites[1][1]; // 2584369721

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

Получить доступ к элементам массива можно также поместив цикл for внутрь другого цикла for . При этом также нужно указать два индекса:

Пример
    «;
    for ($col = 0; $col < 3; $col++) echo "
  • «.$favorites[$row][$col].»»;
    >
    echo «

Желаете больше задачек? Они у нас есть) Реши задачку по массивам.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *