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

Цикл foreach в PHP для индексных массивов

Когда нужно перебрать каждый элемент массива или каждое свойство объекта, естественный выбор — foreach. Счётчик не нужен, потому что PHP сам следит за текущей позицией.

На каждом проходе значение текущего элемента помещается в указанную вами переменную, здесь это $value. Цикл завершается после обработки последнего элемента.

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

Выведите каждый элемент индексного массива $colors:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". С помощью цикла foreach выведите каждый цвет, а после него — перенос строки.
Вывод: PHP-скрипт

Цикл foreach в PHP для ассоциативных массивов

Элементы ассоциативного массива имеют именованные ключи, и часто вместе со значением вам нужен и ключ. Чтобы получить и то и другое, запишите их в заголовке foreach в виде $key => $value.

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

Выводятся имя (ключ) и возраст (значение) каждого участника из $members:

Prompt
Напишите PHP-скрипт, который создаёт ассоциативный массив с участниками: "Peter"=>"35", "Ben"=>"37", "Joe"=>"43". С помощью цикла foreach выведите и ключ, и значение, разделённые " : ", а после них — перенос строки.
Вывод: PHP-скрипт

Цикл foreach в PHP для объектов

С foreach работают и объекты: цикл перебирает их свойства по одному.

Перебор свойств объекта

Здесь имя каждого свойства объекта $myCar выводится рядом с его значением:

Prompt
Напишите PHP-скрипт, который определяет класс Car с публичными свойствами $color и $model и конструктором, который их задаёт. Создайте объект Car с цветом "red" и моделью "Volvo". С помощью цикла foreach выведите имя и значение каждого свойства, разделённые ": ", а после них — перенос строки.
Вывод: PHP-скрипт

Оператор break в PHP

Не обязательно проходить массив до конца. Оператор break завершает цикл до того, как он дойдёт до последнего элемента.

Остановка цикла с помощью break

Цикл завершается, когда $x содержит "blue", поэтому выводятся только цвета, идущие перед ним:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". Используйте цикл foreach. Если текущий цвет равен "blue", используйте break, чтобы остановить цикл. В противном случае выведите цвет, а после него — перенос строки.
Вывод: PHP-скрипт

Оператор continue в PHP

Используйте continue, чтобы пропустить элемент, не завершая цикл. Оставшаяся часть этой итерации отбрасывается, и наступает очередь следующего элемента.

Пропуск итерации с помощью continue

Когда $x содержит "blue", echo пропускается, поэтому выводятся остальные три цвета:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". Используйте цикл foreach. Если текущий цвет равен "blue", используйте continue, чтобы пропустить его. В противном случае выведите цвет, а после него — перенос строки.
Вывод: PHP-скрипт

Цикл foreach в PHP по ссылке

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

Чтобы изменить сам массив, поставьте символ & перед переменной в объявлении foreach. Тогда переменная становится ссылкой на элемент массива, и всё, что вы ей присваиваете, попадает в исходный массив.

Foreach без ссылки

Цикл присваивает $x значение «pink», когда находит «blue», но var_dump() показывает, что $colors не изменился:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". Используйте цикл foreach без ссылки. Если текущий цвет равен "blue", измените переменную цикла на "pink". После цикла используйте var_dump, чтобы показать, что исходный массив не изменился.
Вывод: PHP-скрипт

Foreach со ссылкой

С &$x то же самое присваивание действительно доходит до массива, и «blue» заменяется на «pink»:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". Используйте цикл foreach с оператором ссылки &. Если текущий цвет равен "blue", измените переменную цикла на "pink". После цикла используйте var_dump, чтобы показать, что исходный массив был изменён.
Вывод: PHP-скрипт

Альтернативный синтаксис

Цикл foreach можно записать и вторым способом: заменить фигурные скобки двоеточием и закрыть цикл с помощью endforeach.

Foreach с endforeach

Снова индексный массив $colors, на этот раз выведенный в форме с endforeach:

Prompt
Напишите PHP-скрипт, который создаёт массив цветов: "red", "green", "blue", "yellow". Используйте альтернативный синтаксис foreach с endforeach, чтобы вывести каждый цвет, а после него — перенос строки.
Вывод: PHP-скрипт