Цикл `while` — это простой, но очень мощный инструмент в PHP. Он выполняет блок кода снова и снова, пока заданное условие остается истинным. В отличие от `for`, где мы обычно знаем количество повторений заранее, `while` идеален для ситуаций, когда итерации продолжаются до наступления определенного события — например, пока не будет достигнут конец файла или пользователь не введет нужное слово. В этом тренажере мы пройдем от основ синтаксиса до практического применения, научимся правильно задавать условия и, что очень важно, избегать "вечных" циклов. Задания помогут вам понять, когда лучше использовать `while`, а когда — другие циклические конструкции.
- Модуль 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().
- Деструктуризация массивов.
- Iterator интерфейс
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- IteratorAggregate интерфейс
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Функция htmlspecialchars().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
1. Основы цикла while
Создайте простейший цикл `while`, который выведет числа от 0 до 4. Для этого вам нужно задать условие продолжения цикла и не забыть изменять счетчик внутри тела цикла, чтобы избежать "зависания".
<?php
$i = 0;
while (input1S) {
echo $i . " ";
input2S;
}
?>2. Соберите структуру цикла while
Работа цикла `while` состоит из трех этапов: подготовка (инициализация счетчика), проверка условия и выполнение тела цикла с обновлением счетчика. Соберите из фрагментов правильную последовательность, чтобы вывести на экран "Item 1, Item 2, Item 3".
$i++;}<?phpwhile ($i <= 3) {$i = 1;echo "Item " . $i . ", ";for ($i=1; $i<4; $i++) {?>3. Спаситесь от бесконечного цикла!
Этот код должен был вывести числа от 10 до 1, но в нем есть логическая ошибка, которая создает бесконечный цикл. Найдите и исправьте строку, которая вызывает проблему.
<?php$i = 10;// Обратный отсчет...while ($i > 0) { echo $i . "..."; $i = $i + 1;}?>4. Что выведет этот цикл?
Проанализируйте код. Переменная `$power` удваивается на каждой итерации. Цикл остановится, когда она перестанет быть меньше 50. Какое значение будет у переменной `$power` после завершения цикла?
<?php
$power = 1;
while ($power < 50) {
$power *= 2;
}
echo $power;
?>5. Какой будет итоговая строка?
В этом примере цикл `while` используется для построения строки в обратном порядке. Внимательно посмотрите на код и напишите, какая строка будет выведена в результате его работы.
<?php
$count = 4;
$result = "Старт: ";
while ($count > 0) {
$result .= $count; // .= это конкатенация с присваиванием
$count--;
}
echo $result;
?>6. Когда использовать for, а когда while?
Хотя `for` и `while` могут быть взаимозаменяемы, для некоторых задач одна конструкция подходит лучше другой. Распределите предложенные сценарии по двум категориям: где предпочтительнее `for` и где лучше `while`.
7. Остановка по условию с `break`
Цикл `while(true)` создает бесконечный цикл. Чтобы из него выйти, используют оператор `break` при выполнении какого-то условия. Соберите код, который ищет в массиве число 42 и останавливается, как только его найдет.
<?php
$haystack = [10, 20, 30, 42, 50, 60];
$i = 0;
echo "Ищем 42... ";
while (true) {
if ($haystack[$i] == 42) {
echo "Найдено!";
input1S;
}
input2S;
}
?>8. Особенность цикла do-while
В PHP есть еще одна разновидность цикла — `do-while`. Он очень похож на `while`, но с одним ключевым отличием. Посмотрите на код, где условие изначально ложно (`5 < 5` — это `false`), и предскажите, что будет выведено.
<?php
$i = 5;
do {
echo "Эта строка будет выведена.";
$i++;
} while ($i < 5);
?>