Цикл while
может выполняться бесконечно
(это приведет к зависанию скрипта и страницы
браузера), достаточно передать ему выражение,
которое никогда не станет ложным.
Например, так:
<?php
$test = true;
while ($test === true) {
/*
Написанный здесь код будет выполняться "вечно"
(пока скрипт не будет остановлен принудительно).
*/
}
?>
Начинающие программисты время от времени загоняют свою программу в бесконечный цикл (с вами это тоже обязательно случится пару раз).
Давайте рассмотрим распространенные ошибки начинающих.
Ошибка 1
Пусть есть вот такой цикл, выводящий числа
от 1
до 10
:
<?php
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
?>
Представим теперь, что программист забыл сделать увеличение счетчика в цикле:
<?php
$i = 1;
while ($i <= 10) {
echo $i;
}
?>
В этом случае цикл будет выполнятся бесконечно, так как условие, при котором цикл закончится, никогда не будет достигнуто.
Ошибка 2
Пусть опять наш программист хотел выводить
числа от 1
до 10
, однако, вместо
++
написал --
:
<?php
$i = 1;
while ($i <= 10) {
echo $i;
$i--; // перепутал ++ и --
}
?>
В этом случае, хотя счетчик и изменяется, но он изменяется не в ту сторону - и опять условие никогда не будет достигнуто.
Ошибка 3
Бывает и обратная проблема - можно так написать
код, что условие цикла уже изначально будет
неверно и цикл просто не запустится. Пусть,
к примеру, программист хотел вывести столбец
чисел от 1
до 10
, однако, вместо
знака меньше
написал знак больше
:
<?php
$i = 1;
while ($i > 10) { // правильно было написать $i < 10
echo $i;
$i++;
}
?>
В таком случае цикл просто не начнется, так как условие изначально неверно.
Ошибка 4
Бывает и так, что некоторым начинающим кажется, что цикл крутится не пока условие верно, а наоборот - цикл крутится пока условие не верно и остановится, когда оно станет верным.
Вот пример такого кода:
<?php
$i = 1;
while ($i == 10) { // зачем-то написано ==
echo $i;
$i++;
}
?>
При таком условии цикл вообще не начнется, так как условие просто изначально не верно.
Практические задачи
В следующем коде программист вывел числа
от 10
до 1
:
<?php
$i = 10;
while ($i >= 1) {
echo $i;
}
?>
В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.
В следующем коде программист вывел числа
от 10
до 1
:
<?php
$i = 10;
while ($i >= 1) {
echo $i;
$i++;
}
?>
В коде, однако, была допущена ошибка, которая привела к тому, что цикл выполняется бесконечно. Исправьте ошибку программиста.
В следующем коде программист вывел числа
от 10
до 1
:
<?php
$i = 10;
while ($i <= 0) {
echo $i;
$i--;
}
?>
В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.
В следующем коде программист вывел числа
от 10
до 1
:
<?php
$i = 10;
while ($i == 0) {
echo $i;
$i--;
}
?>
В коде, однако, была допущена ошибка, которая привела к тому, что на экран ничего не вывелось. Исправьте ошибку программиста.
В следующем коде программист вывел числа
от 10
до 1
:
<?php
$i = 10;
while ($i == 10) {
echo $i;
$i--;
}
?>
В коде, однако, была допущена ошибка, которая
привела к тому, что цикл вывел только число
10
и закончил свою работу. Исправьте
ошибку программиста.