Перебор многомерных массивов в PHP

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

<?php $arr = [ ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ]; ?>

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

<?php foreach ($arr as $sub) { foreach ($sub as $elem) { echo $elem; } } ?>

Дан следующий массив:

<?php $arr = [[1, 2, 3], [4, 5, 6, 7], [8, 9]]; ?>

С помощью двух вложенных циклов найдите сумму элементов этого массива.

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

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

<?php $arr = [ [ ['a', 'b'], ['c', 'd'], ], [ ['e', 'f'], ['g', 'h'], ], [ ['i', 'j'], ['k', 'l'], ], ]; ?>

Давайте выведем все его элементы на экран:

<?php foreach ($arr as $sub) { foreach ($sub as $subsub) { foreach ($subsub as $elem) { echo $elem; } } } ?>

Дан следующий массив:

<?php $arr = [ [ [1, 2, 3], [6, 7, 8], [3, 8, 4], [6, 7, 9], ], [ [9, 1, 2], [4, 5, 6], ], [ [9, 1, 2], [4, 5, 6], [5, 6, 3], ], ]; ?>

С помощью трех вложенных циклов найдите сумму элементов этого массива.

Работа с ключами

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

<?php $arr = [ 'user1' => [ 'name' => 'name1', 'age' => 31, ], 'user2' => [ 'name' => 'name2', 'age' => 32, ], ]; ?>

Давайте переберем его вложенными циклами и выведем его элементы с ключами в формате ключ ключ элемент:

<?php foreach ($arr as $key1 => $sub) { foreach ($sub as $key2 => $elem) { echo $key1 . ' ' . $key2 . ' ' . $elem . '<br>'; } } ?>

Дан следующий массив:

<?php $arr = [ [ 'name' => 'user1', 'age' => 30, 'salary' => 1000, ], [ 'name' => 'user2', 'age' => 31, 'salary' => 2000, ], [ 'name' => 'user3', 'age' => 32, 'salary' => 3000, ], ]; ?>

Выведите элементы этого массива в формате ключ-значение.

Дан следующий массив:

<?php $arr = [ 'group1' => ['user11', 'user12', 'user13', 'user43'], 'group2' => ['user21', 'user22', 'user23'], 'group3' => ['user31', 'user32', 'user33'], 'group4' => ['user41', 'user42', 'user43'], 'group5' => ['user51', 'user52'], ]; ?>

С помощью двух вложенных циклов выведите элементы этого массива в формате имя группы - имя юзера.