Цикл foreach PHP
Wab IT
Цикл foreach в PHP для вывода массива
Цикл foreach в php, работает только с массивами и объектами, для этого он и был написан.
Если перевести foreach то получим for-для, each-каждый. Цикл для каждого элемента в массиве.
У нас есть массив с номерами, давайте выведем их все сразу. Пример
$nomera = [1, 2, 3, 4, 5 ,6, 7]; // массив
foreach ($nomera as $el) { // цикл для, записать элементы массива шкаф, в переменную el
echo $el . ', '; // выводим элементы из массива шкаф записанные в переменную el
} // получаем 1, 2, 3, 4, 5, 6, 7
Ссылки в цикле foreach
Если возникнет необходимость увеличить номера в массиве, то задав елементу ссылку знаком &, без проблем это осуществим. Пример
foreach ($nomera as &$el) { Добавили ссылку на переменную с элементами
$el= $el + 3; // увеличили переменную на 3
echo $el . ', '; } // получаем 4, 5, 6, 7, 8, 9, 10
Без ссылки мы получим тоже самое. Но если выводить массив по ключу, то.
Посмотрите что произойдет убрав вы ссылку на элемент.
echo $nomera[0]; // вывели по ключу и получаем 1 вместо 4
Повторим прошлый урок. Первый наш массив был шкаф, давайте его и напишем.
$shkaf = [' майки ', ' свитера ' , ' джинсы ', ];
Существует два вида вывода в цикле массива.
Первый.
Пройтись по массиву и записать значение как переменную. Пройдясь циклом по массиву, все элементы записывает в переменную. Создает виртуальные переменные с данными из массива.
foreach ($shkaf as $element){ // из массива записываем данные в переменную элемент.
echo $element . '<br>'; // выводим переменную с данными и ставим тег перенос строки };
Так мы вывели элементы массива шкаф.
Второй способ это вывод индекса и элемента.
foreach ($shkaf as $key => $el) { // $shkaf-массив as $key-переменная в которую записаны индексы => $el-переменная в которую записаны элемененты. echo " $key $el "; // вывели };
и получили ( 0 майки 1 свитера 2 джинсы )
Помните как мы записывали нумерованные массивы задав ключи, так и здесь отобразился индекс и значения.
Так можно вывести и ассоциативный массив, но как быть если если нам нужно вывести данные из многомерного массива. Создадим шкаф с двумерным массивом и пройдем по нему циклом foreach или перепишем наш шкаф в двумерный массив.
$shkaf = [
' майка ' => [' майка с рисунком ', 7, ' футболки однотонные ', 5],
' свитер' => [ ' полувер ', 3, ' шерстяной ', 4,],
' джинсы ' => [' синие ', 4, ' черные ', ], ];
И при помощи цикла выведем все данные. Так как у нас есть ключи, и индексы в многомерном массиве, то нам нужно все элементы передать в цикл, чтобы он по ним всем прошел и записал в переменные.
1. Прошли по индексу с ключем. Вывели (майка Array, свитер Array, джинсы Array). У нас ассоциативный ключ отобразился, а элемент записал как второй уровень массива.
Вывести массив при помощи конструкции list()
Конструкция list() присваивает переменным значения подобно массиву, но для того чтобы отобразить данные из списка, каждому индексу необходимо назначать переменную. Пример.
foreach ($shkaf as $key => list($id0, $id1)) { // записали два индекса из списка 0 и 1
echo "$key $id0 <br> в количестве $id1 <br> "; // отобразили ключ и индекс 0, 1 };
Если массив содержит недостаточно элементов для заполнения всех переменных из list(), то будет сгенерировано замечание об ошибке/
Вывести многомерный массив foreach
Для того чтобы вывести данные из многомерного массива, необходимо повторить цикл, добавить переменную в которую цикл запишет элементы из двумерного массива.
foreach ($shkaf as $key => $el) {
echo " <p> $key <br>"; // вывели ключ и отделили переносом строки
foreach ($el as $key2) { // записали из второго уровня массива данные как key2
echo " $key2 "; // вывели данные }};
И получили индекс и данные из массива.
Вывести трехмерный массив foreach
Как вывести наш трехмерный массив шкаф, из прошлого урока? Перепишем массив шкаф.
$shkaf = [
'mayka' => [ 1 => [' майка с рисунком ', 7,],
2 => [' футболки однотонные ', 5],
],
'sviter' => [
1 => [' полувер ', 3,],
2 => [' на пуговицах ', 3, ' на молнии ', 4,],
3 => [' толстовка с капюшоном ', 5,],
],
'jensi' => [' джинсы ', 6,], ];
И получим:
mayka Array Array
sviter Array Array Array
jensi джинсы 6
Видим что данные вывелись только из двумерного массива, ключ и элементы.
Трехмерный массив вывел только ключи и индексы. Допишем переменные в которые запишутся элементы.
foreach ($shkaf as $key => $el) {
echo "<p> $key <br> $el "; foreach ($el as $key2 => $el2) { echo "<br> $key2 , $el2"; foreach ($el2 as $key3){ echo $key3 . ' '; }} };
На рисунке ниже мы видим какой ключ и индекс за что отвечает.
Домашнее задание
Переписать массив шкаф и вывести его циклом foreach.
Отобразить ключи, номер полки, вещи на полках и количество .
mayka
1. майка с рисунком, 7 ,
2. футболки однотонные, 5 ,
sviter
3. полувер, 3 ,
4. на пуговицах, 3, на молнии, 4 ,
5. толстовка с капюшоном, 5 ,
jensi
6. джинсы, 6 ,