Цикл while

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Цикл `while` — это простой, но очень мощный инструмент в PHP. Он выполняет блок кода снова и снова, пока заданное условие остается истинным. В отличие от `for`, где мы обычно знаем количество повторений заранее, `while` идеален для ситуаций, когда итерации продолжаются до наступления определенного события — например, пока не будет достигнут конец файла или пользователь не введет нужное слово. В этом тренажере мы пройдем от основ синтаксиса до практического применения, научимся правильно задавать условия и, что очень важно, избегать "вечных" циклов. Задания помогут вам понять, когда лучше использовать `while`, а когда — другие циклические конструкции.

Список тем

1. Основы цикла while

id: 38947_task_while_1

Создайте простейший цикл `while`, который выведет числа от 0 до 4. Для этого вам нужно задать условие продолжения цикла и не забыть изменять счетчик внутри тела цикла, чтобы избежать "зависания".

Заполните пропуски
<?php

$i = 0;
while (input1S) {
    echo $i . " ";
    input2S;
}

?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Соберите структуру цикла while

id: 38947_task_while_2

Работа цикла `while` состоит из трех этапов: подготовка (инициализация счетчика), проверка условия и выполнение тела цикла с обновлением счетчика. Соберите из фрагментов правильную последовательность, чтобы вывести на экран "Item 1, Item 2, Item 3".

Перетяните в правильном порядке строки из одного блока в другой
$i++;
}
<?php
while ($i <= 3) {
$i = 1;
echo "Item " . $i . ", ";
for ($i=1; $i<4; $i++) {
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Спаситесь от бесконечного цикла!

id: 38947_task_while_3

Этот код должен был вывести числа от 10 до 1, но в нем есть логическая ошибка, которая создает бесконечный цикл. Найдите и исправьте строку, которая вызывает проблему.

Найдите ошибку и исправьте
<?php
$i = 10;
// Обратный отсчет...
while ($i > 0) {
    echo $i . "...";
    $i = $i + 1;
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Что выведет этот цикл?

id: 38947_task_while_4

Проанализируйте код. Переменная `$power` удваивается на каждой итерации. Цикл остановится, когда она перестанет быть меньше 50. Какое значение будет у переменной `$power` после завершения цикла?

Выберите правильный вариант ответа
<?php

$power = 1;
while ($power < 50) {
    $power *= 2;
}
echo $power;

?>
Сообщения
Проверить
Показать подсказку

5. Какой будет итоговая строка?

id: 38947_task_while_5

В этом примере цикл `while` используется для построения строки в обратном порядке. Внимательно посмотрите на код и напишите, какая строка будет выведена в результате его работы.

Что должно получиться?
<?php

$count = 4;
$result = "Старт: ";
while ($count > 0) {
    $result .= $count; // .= это конкатенация с присваиванием
    $count--;
}
echo $result;

?>
Сообщения
Проверить
Показать подсказку

6. Когда использовать for, а когда while?

id: 38947_task_while_6

Хотя `for` и `while` могут быть взаимозаменяемы, для некоторых задач одна конструкция подходит лучше другой. Распределите предложенные сценарии по двум категориям: где предпочтительнее `for` и где лучше `while`.

Перетяните элементы в соответствующие блоки
Лучше использовать FOR
Лучше использовать WHILE
Вывести все четные числа от 1 до 100.
Читать данные из сетевого подключения, пока оно не закроется.
Перебрать все 52 карты в колоде.
Ждать, пока пользователь не введет пароль "12345".
Сделать 10 попыток подключения к базе данных.
Моделировать рост популяции, пока она не достигнет 1 миллиона.
Сообщения
Проверить
Показать подсказку

7. Остановка по условию с `break`

id: 38947_task_while_7

Цикл `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;
}
?>
break
continue
$i++;
$i = 0;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Особенность цикла do-while

id: 38947_task_while_8

В PHP есть еще одна разновидность цикла — `do-while`. Он очень похож на `while`, но с одним ключевым отличием. Посмотрите на код, где условие изначально ложно (`5 < 5` — это `false`), и предскажите, что будет выведено.

Выберите правильный вариант ответа
<?php

$i = 5;
do {
    echo "Эта строка будет выведена.";
    $i++;
} while ($i < 5);

?>
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 38947_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру