Цикл PHP foreach для индексированных массивов
Цикл PHP foreach - выполняет
блок кода для каждого элемента в массиве или каждого свойства в объекте.
Следующий пример перебирает все элементы индексированного массива:
Пример
Переберите элементы индексированного массива:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $value) {
echo "$value <br>";
}
Попробуйте сами »
Пояснение: На каждой итерации цикла значение текущего элемента массива присваивается
переменной $value. Итерация продолжается до тех пор, пока не будет достигнут последний элемент массива.
Цикл PHP foreach для ассоциативных массивов
Массив выше является индексированным массивом, где первый элемент имеет ключ 0, второй - ключ 1 и так далее.
Ассоциативные массивы отличаются, ассоциативные массивы используют именованные ключи, и при их переборе вы, возможно, также захотите сохранить имя ключа вместе со значением.
Это делается путем указания как ключа, так и значения в цикле foreach,
вот так:
Пример
Выведите и ключ, и значение из массива $members:
$members = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
foreach ($members as $key => $value) {
echo "$key : $value <br>";
}
Попробуйте сами »
Вы узнаете больше о массивах в главе PHP Массивы.
Цикл PHP foreach для объектов
Цикл foreach также можно использовать для перебора свойств объекта:
Пример
Выведите имена свойств и значения объекта $myCar:
class Car {
public $color;
public $model;
public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
}
}
$myCar = new Car("red", "Volvo");
foreach ($myCar as $x => $y) {
echo "$x: $y <br>";
}
Попробуйте сами »
Вы узнаете больше об объектах в главе PHP Объекты и Классы.
Оператор break в PHP
С помощью оператора break мы можем остановить цикл, даже если он не достиг конца:
Пример
Остановите цикл, если $x равен "blue":
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") break;
echo "$x <br>";
}
Попробуйте сами »
Оператор continue в PHP
С помощью оператора continue мы можем
пропустить текущую итерацию и перейти к следующей:
Пример
Пропустите и перейдите к следующей итерации, если $x равен "blue":
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") continue;
echo "$x <br>";
}
Попробуйте сами »
PHP Foreach Цикл По Ссылке
При переборе элементов массива, любые изменения, внесенные в элемент массива, по умолчанию НЕ повлияют на исходный массив:
Пример
По умолчанию изменение элемента массива не повлияет на исходный массив:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
Попробуйте сами »
НО, используя символ &
в объявлении foreach, элемент массива присваивается
по ссылке,
что приводит к тому, что любые изменения, внесенные в элемент массива, также будут внесены в исходный массив:
Пример
Присваивая элементы массива по ссылке, изменения повлияют на исходный массив:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as &$x) {
if ($x == "blue") $x = "pink";
}
var_dump($colors);
Попробуйте сами »
Альтернативный синтаксис
Синтаксис цикла foreach также может быть записан с помощью оператора
endforeach вот так:
Пример
Переберите элементы индексированного массива:
$colors = array("red", "green", "blue", "yellow");
foreach ($colors as $x) :
echo "$x <br>";
endforeach;
Попробуйте сами »