0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>На практике массивы совсем не обязательно представляют собой набор простых значений. В некоторых случаях каждый элемент массива содержит в виде значения другой массив, а он, в свою очередь, тоже может содержать массив и т. д. и т. п. В результате в PHP можно успешно создавать и двумерные, и трёхмерные, то есть многомерные массивы. Давайте посмотрим, как с ними работать.</p>
1
<p>На практике массивы совсем не обязательно представляют собой набор простых значений. В некоторых случаях каждый элемент массива содержит в виде значения другой массив, а он, в свою очередь, тоже может содержать массив и т. д. и т. п. В результате в PHP можно успешно создавать и двумерные, и трёхмерные, то есть многомерные массивы. Давайте посмотрим, как с ними работать.</p>
2
<h2>Двумерные массивы в PHP</h2>
2
<h2>Двумерные массивы в PHP</h2>
3
<p>Двумерный массив в PHP представляет собой массив, хранящий в качестве значений другие массивы. Создаётся он посредством конструктора array():</p>
3
<p>Двумерный массив в PHP представляет собой массив, хранящий в качестве значений другие массивы. Создаётся он посредством конструктора array():</p>
4
$flowers = array( array("фиалки", 100 , 15), array("астры", 60 , 25), array("каллы", 180 , 7) );<p>Итак, в нашем случае массив $flowers включает в себя 3 массива. Тут следует вспомнить, что для доступа к элементам одномерного массива в PHP следует указывать ключ и имя массива. В случае с двумерными массивами это правило тоже действует, правда, есть исключение: каждый элемент имеет 2 ключа: один для выбора строки, другой для выбора столбца.</p>
4
$flowers = array( array("фиалки", 100 , 15), array("астры", 60 , 25), array("каллы", 180 , 7) );<p>Итак, в нашем случае массив $flowers включает в себя 3 массива. Тут следует вспомнить, что для доступа к элементам одномерного массива в PHP следует указывать ключ и имя массива. В случае с двумерными массивами это правило тоже действует, правда, есть исключение: каждый элемент имеет 2 ключа: один для выбора строки, другой для выбора столбца.</p>
5
<p>Если мы хотим вывести все элементы данного массива, достаточно прописать доступ к каждому элементу вручную. Но, разумеется, будет лучше, если мы сделаем это с помощью вложенных циклов:</p>
5
<p>Если мы хотим вывести все элементы данного массива, достаточно прописать доступ к каждому элементу вручную. Но, разумеется, будет лучше, если мы сделаем это с помощью вложенных циклов:</p>
6
<?php $flowers = array( array("фиалки", 100 , 15), array("астры", 60 , 25), array("каллы", 180 , 7) ); echo "<h1>Выполняем доступ к элементам вручную</h1>"; echo $flowers[0][0]." стоимость ".$flowers[0][1]." количество ".$flowers[0][2]."<br>"; echo $flowers[1][0]." стоимость ".$flowers[1][1]." количество ".$flowers[1][2]."<br>"; echo $flowers[2][0]." стоимость ".$flowers[2][1]." количество ".$flowers[2][2]."<br>"; echo "<h1>Применяем циклы для вывода элементов</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$flowers[$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?><p>При этом вместо номеров столбцов (индексов, присвоенных по умолчанию) мы можем задавать нужные ключи, для чего нам понадобятся<strong>ассоциативные массивы</strong>. Нижеследующий массив станет хранить такие же данные, однако мы будем использовать для именования столбцов с информацией<strong>ключи</strong>:</p>
6
<?php $flowers = array( array("фиалки", 100 , 15), array("астры", 60 , 25), array("каллы", 180 , 7) ); echo "<h1>Выполняем доступ к элементам вручную</h1>"; echo $flowers[0][0]." стоимость ".$flowers[0][1]." количество ".$flowers[0][2]."<br>"; echo $flowers[1][0]." стоимость ".$flowers[1][1]." количество ".$flowers[1][2]."<br>"; echo $flowers[2][0]." стоимость ".$flowers[2][1]." количество ".$flowers[2][2]."<br>"; echo "<h1>Применяем циклы для вывода элементов</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; for ($col = 0; $col < 3; $col++) { echo "<li>".$flowers[$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?><p>При этом вместо номеров столбцов (индексов, присвоенных по умолчанию) мы можем задавать нужные ключи, для чего нам понадобятся<strong>ассоциативные массивы</strong>. Нижеследующий массив станет хранить такие же данные, однако мы будем использовать для именования столбцов с информацией<strong>ключи</strong>:</p>
7
$flowers = array( array( "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ), array( "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ), array( "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ) );<p>Ключи повышают удобство работы с массивом, особенно тогда, когда надо получить одно из значений. Нужные данные найти совсем просто, обратившись к правильной ячейке и применяя значимые имена столбца и строки. Но тут мы теряем возможность последовательного обхода массива посредством цикла for.</p>
7
$flowers = array( array( "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ), array( "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ), array( "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ) );<p>Ключи повышают удобство работы с массивом, особенно тогда, когда надо получить одно из значений. Нужные данные найти совсем просто, обратившись к правильной ячейке и применяя значимые имена столбца и строки. Но тут мы теряем возможность последовательного обхода массива посредством цикла for.</p>
8
<p>Перебрать массивы, используя цикл for, можно, только когда мы говорим о дочерних массивах. Дело в том, что они, в свою очередь, считаются ассоциативными, поэтому для перебора подойдёт цикл foreach. Также можно выполнить перебор элементов вручную:</p>
8
<p>Перебрать массивы, используя цикл for, можно, только когда мы говорим о дочерних массивах. Дело в том, что они, в свою очередь, считаются ассоциативными, поэтому для перебора подойдёт цикл foreach. Также можно выполнить перебор элементов вручную:</p>
9
<?php $flowers = array( array( "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ), array( "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ), array( "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ) ); echo "<h1>Выполняем доступ к элементам ассоциативного массива вручную</h1>"; for ($row = 0; $row < 3; $row++) { echo $flowers[$row]["Название"]." стоимость ".$flowers[$row]["Стоимость"] ." количество ".$flowers[$row]["Количество"]; echo "<br>"; } echo "<h1>Используем для доступа к элементам цикл foreach</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; foreach($flowers[$row] as $key => $value) { echo "<li>".$value."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?><p>Кстати, совсем необязательно применять во время создания двумерного массива конструктор array() - подойдут и квадратные скобки:</p>
9
<?php $flowers = array( array( "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ), array( "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ), array( "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ) ); echo "<h1>Выполняем доступ к элементам ассоциативного массива вручную</h1>"; for ($row = 0; $row < 3; $row++) { echo $flowers[$row]["Название"]." стоимость ".$flowers[$row]["Стоимость"] ." количество ".$flowers[$row]["Количество"]; echo "<br>"; } echo "<h1>Используем для доступа к элементам цикл foreach</h1>"; echo "<ol>"; for ($row = 0; $row < 3; $row++) { echo "<li><b>Номер строки $row</b>"; echo "<ul>"; foreach($flowers[$row] as $key => $value) { echo "<li>".$value."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ol>"; ?><p>Кстати, совсем необязательно применять во время создания двумерного массива конструктор array() - подойдут и квадратные скобки:</p>
10
$flowers = [ [ "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ], [ "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ], [ "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ] ];<h2>Трёхмерные массивы в PHP</h2>
10
$flowers = [ [ "Название" => "фиалки", "Стоимость" => 100, "Количество" => 15 ], [ "Название" => "астры", "Стоимость" => 60, "Количество" => 25, ], [ "Название" => "каллы", "Стоимость" => 180, "Количество" => 7 ] ];<h2>Трёхмерные массивы в PHP</h2>
11
<p>Но никто не говорит, что надо ограничиваться лишь 2-мя измерениями: эти массивы тоже могут, в свою очередь, включать в себя новые.</p>
11
<p>Но никто не говорит, что надо ограничиваться лишь 2-мя измерениями: эти массивы тоже могут, в свою очередь, включать в себя новые.</p>
12
<p>Многомерный (3-мерный) массив характеризуется шириной, высотой и глубиной. Говоря о двумерном массиве, мы представляем<strong>таблицу</strong>, говоря о многомерном, можно представить<strong>слои</strong>в этой таблице. И каждый элемент многомерного массива станет ссылаться на слой, столбец и строку.</p>
12
<p>Многомерный (3-мерный) массив характеризуется шириной, высотой и глубиной. Говоря о двумерном массиве, мы представляем<strong>таблицу</strong>, говоря о многомерном, можно представить<strong>слои</strong>в этой таблице. И каждый элемент многомерного массива станет ссылаться на слой, столбец и строку.</p>
13
<p>Давайте изменим "цветочный" массив, переделав его в 3-мерный, то есть превратив в<strong>массив массивов</strong>:</p>
13
<p>Давайте изменим "цветочный" массив, переделав его в 3-мерный, то есть превратив в<strong>массив массивов</strong>:</p>
14
$flowers = [ [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7], ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ] ];<p>Так как данный PHP-массив включает в себя лишь числовые индексы, мы можем применять вложенные циклы для его отображения:</p>
14
$flowers = [ [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7], ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ] ];<p>Так как данный PHP-массив включает в себя лишь числовые индексы, мы можем применять вложенные циклы для его отображения:</p>
15
<?php $flowers = [ [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7], ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ] ]; echo "<ul>"; for ( $layer = 0; $layer < 3; $layer++ ) { echo "<li>Номер слоя $layer"; echo "<ul>"; for ( $row = 0; $row < 3; $row++ ) { echo "<li>Номер строки $row"; echo "<ul>"; for ( $col = 0; $col < 3; $col++ ) { echo "<li>".$flowers[$layer][$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; ?><p><em>По материалам статьи "<a>PHP: Многомерные массивы</a>".</em></p>
15
<?php $flowers = [ [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7], ], [ ["фиалки", 100 , 15], ["астры", 60 , 25], ["каллы", 180 , 7] ] ]; echo "<ul>"; for ( $layer = 0; $layer < 3; $layer++ ) { echo "<li>Номер слоя $layer"; echo "<ul>"; for ( $row = 0; $row < 3; $row++ ) { echo "<li>Номер строки $row"; echo "<ul>"; for ( $col = 0; $col < 3; $col++ ) { echo "<li>".$flowers[$layer][$row][$col]."</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; echo "</li>"; } echo "</ul>"; ?><p><em>По материалам статьи "<a>PHP: Многомерные массивы</a>".</em></p>
16
<p>Пожалуй, этого достаточно, чтобы получить представление о двумерных и многомерных массивах в PHP. Приобрести более глубокие навыки PHP-программирования вы всегда сможете на наших курсах:</p>
16
<p>Пожалуй, этого достаточно, чтобы получить представление о двумерных и многомерных массивах в PHP. Приобрести более глубокие навыки PHP-программирования вы всегда сможете на наших курсах:</p>
17
17