Цикл `foreach` — это самый удобный и безопасный способ перебрать элементы массива в PHP. В отличие от `for`, вам не нужно следить за счетчиками и размером массива. `foreach` просто берет массив и проходит по каждому его элементу один за другим. Это делает код более чистым, читаемым и менее подверженным ошибкам. Этот тренажер проведет вас от основ синтаксиса до более сложных техник, таких как работа с ассоциативными массивами и изменение элементов "на лету". Вы научитесь получать как значения, так и ключи элементов, и поймете, почему `foreach` является стандартом для работы с массивами в PHP.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Основы синтаксиса: перебор значений
Простейшее использование `foreach` — это перебор массива для получения только его значений. Заполните пропуски, чтобы создать цикл, который переберет массив `$fruits` и выведет каждый фрукт на новой строке.
<?php
$fruits = ["Яблоко", "Апельсин", "Банан"];
foreach (input1S as input2S) {
echo $fruit . "\n";
}
?>Соберите цикл foreach
Из перемешанных строк кода соберите работающий скрипт. Он должен объявить массив с цветами и затем, используя `foreach`, вывести каждый цвет в отдельной строке. Остерегайтесь лишних фрагментов!
<?php}echo $color . "\n";foreach ($colors as $color) {$colors = ["Red", "Green", "Blue"];while ($color) {?>Перебор с ключом и значением
Часто нужно получить не только значение элемента, но и его ключ. Для этого `foreach` имеет расширенный синтаксис. Заполните пропуски, чтобы вывести и страну, и ее столицу из ассоциативного массива.
<?php
$capitals = [
"Италия" => "Рим",
"Франция" => "Париж"
];
foreach ($capitals as input1S => input2S) {
echo "Столица страны " . $country . " — " . $city . ".\n";
}
?>Исправьте оператор связи
При переборе массива с ключами и значениями используется специальный оператор. В данном коде он указан неверно, что приведет к синтаксической ошибке. Найдите и исправьте ошибку.
<?php$user = ["name" => "Alex", "role" => "admin"]; foreach ($user as $key -> $value) { echo "$key: $value\n";}?>Что выведет этот код?
Внимательно проанализируйте цикл. Он перебирает массив продуктов, но выводит только те, цена которых больше 500. Выберите вариант, который точно соответствует тому, что выведет скрипт.
<?php
$products = [
"Laptop" => 1200,
"Mouse" => 25,
"Keyboard" => 100,
"Monitor" => 600,
];
foreach ($products as $name => $price) {
if ($price > 500) {
echo $name . " ";
}
}
?>Подсчет общей суммы
Цикл `foreach` часто используют для агрегации данных. В этом примере он подсчитывает общую стоимость товаров в корзине. Посмотрите на код и напишите итоговое число, которое будет выведено.
<?php
$prices = [199, 45, 1200];
$total = 0;
foreach ($prices as $price) {
$total += $price;
}
echo $total;
?>Изменение массива по ссылке
Чтобы изменить значения массива прямо во время перебора, нужно передавать значение по ссылке. Для этого используется специальный символ. Перетащите нужный символ из банка, чтобы код удвоил каждое число в массиве `$numbers`.
<?php
$numbers = [1, 5, 10];
foreach ($numbers as input1S $number) {
$number *= 2;
}
// print_r выводит массив в читаемом виде
print_r($numbers);
?>Генерация HTML-списка
`foreach` идеально подходит для генерации HTML-разметки на основе данных из массива. Расставьте строки кода в правильном порядке, чтобы создать ненумерованный список (`
- `) из элементов массива `$links`.
echo '';foreach ($links as $link) {echo "{$link} ";$links = ['Главная', 'О нас', 'Контакты'];}echo '';