Цикл foreach осуществляет последовательный перебор всех элементов массива. Он работает только с массивами и объектами, а в случае его использования с переменными других типов или неинициализированными переменными будет сгенерирована ошибка.
Есть два вида синтаксиса для данного цикла. Первый вид синтаксиса цикла foreach выглядит следующим образом:
Цикл будет перебирать заданный массив — $array (вместо $array подставляется название массива). На каждой итерации значение текущего элемента присваивается переменной $value (можно указать любое другое имя переменной).
Оператор цикла foreach очень удобен, поскольку сам выполняет обход и чтение всех элементов массива, пока не будет достигнут последний. Он позволяет не держать постоянно в памяти тот факт, что индексация массивов начинается с нуля, и никогда не выходит за пределы массива, что делает конструкцию цикла очень удобной и помогает избежать распространенных ошибок.
Посмотрим, как он работает на примере:
Второй вид синтаксиса foreach , выглядит так:
При использовании данной формы синтаксиса на каждой итерации дополнительно присваивается значение текущего ключа переменной $key (можно указать любое другое имя переменной):
Чтобы можно было напрямую изменять элементы массива внутри цикла, нужно использовать ссылку. В этом случае значение будет присвоено по ссылке.
С помощью цикла FOREACH мы можем перебрать все элементы массива и выполнить для них (или только для некоторых из них) какие-либо действия.
Допустим, у нас есть массив товаров. Нужно вывести имена всех товаров, разделив их тегом
:
Результат в браузере:
Круто, да? Всего 2 строчки кода для вывода, причём неважно, насколько большой исходный массив! А теперь попробуем разобраться, как это работает.
Принцип работы цикла FOREACH
Возьмём пример попроще:
Когда мы запускаем цикл, PHP берёт первое значение массива и помещает его в переменную $value. Затем один раз выполняется блок кода. Затем PHP делает тоже самое со вторым значением, третьим и т.д.
Получается, команды, принадлежащие циклу FOREACH, будут запущены столько раз, сколько в нашем массиве элементов.
Для получения доступа к ключам массива существует следующий синтаксис:
Результат в браузере:
Чтобы выполнить в цикле несколько команд, используем уже знакомые нам фигурные скобки <> :
Перебор многомерного массива
Создадим обычный двумерный массив:
Если нужно перебрать элементы только одного индекса, мы можем сделать так:
Если нам требуется вывести все ключи, мы можем использовать два цикла foreach, один внутри другого:
Результат в браузере:
1. Создайте массив $arr и заполните его тремя значениями.
2. С помощью цикла foreach выведите все ключи и значения этого массива. Между ключом и значением должна быть строка -> , а после значения — перенос строки (тег
).
1. Создайте массив $arr и заполните его тремя значениями, каждое из которых должно быть одномерным массивом. В итоге должен получиться обычный двумерный массив.
2. Выведите ключи массива.
3. Выведите все значения подмассивов. Значения каждого подмассива разделите запятыми, но так, чтобы запятая была только между элементами, её не должно быть перед первым элементом и после последнего.
Например, для массива [1,2,3] нужно вывести строку 1, 2, 3
Забыли, что делает функция implode? Тогда рекомендую пересмотреть урок Преобразование массивов.
Я пишу код для зацикливания данных из многомерного массива.
Зацикливаясь, я запутался, получая детали из массива. Я пробовал несколько способов получить, но тщетно.
Теперь я хочу получить значения из ключ 4 предоставляется в массиве.
Решение
Для доступа к многомерному массиву вам необходимо получить доступ через foreach() или непосредственно с помощью ключей, которые у вас есть в print_r() функция.
Следовательно, согласно вашему примеру, вы можете напрямую получить доступ к нужной вам переменной, используя
- первая переменная массива вместе с ключом, который имеет первый массив.
Рассмотрите этот массив, и вам нужно получить первое значение, которое вы можете обработать следующим образом.
print_r($var); в результате чего
Вы можете получить переменную двумя способами:
Способ первый:
Поскольку переменная, которая содержит массив $var следовательно, вам нужно получить доступ, как это.
Чтобы получить значение, которое имеет ключ, вы можете иметь $var[‘match1’][4] и вы можете применить foreach к переменной и получить ее значение.
Способ второй:
- Получение значения ключа 0 — 0 в массиве, который у вас есть, вы можете кодировать как — $var[‘match1’][4][0]
- Получение значения ключа 1 — 1 в массиве, который у вас есть, вы можете кодировать как — $var[‘match1’][4][1]
Вы можете получить как можно больше значений в массиве с помощью двух вышеупомянутых точек.
Выход для обоих будет таким же, как показано ниже
Другие решения
Это действительно очень просто. Давайте предположим, что имя вашего основного массива $mainarray , Итак, вот как вы можете получить массив ключ 4.
Доступ к массиву первого уровня match1 ключ, а затем 4 в качестве индекса, чтобы получить массив второго уровня.