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