Elementor Header #8

57. Цикл While

1. Введение

Цикл while в PHP используется для выполнения блока кода до тех пор, пока условие является истинным. Это один из основных типов циклов, который позволяет повторять операции без необходимости многократного написания одного и того же кода.

2. Основной синтаксис цикла while

Синтаксис:

				
					<?php
while (condition) {
    // Код, который будет выполняться, пока условие истинно
}
?>

				
			
  • condition — условие, которое проверяется перед каждым выполнением кода внутри цикла. Если условие истинно (true), то выполняется код внутри цикла. Если ложное (false), выполнение цикла завершается.
  • Код внутри цикла — блок кода, который будет выполняться каждый раз, когда условие истинно.

3. Примеры использования цикла while

Простой пример:

				
					<?php
$counter = 1;

while ($counter <= 5) {
    echo "Count: $counter\n";
    $counter++; // Увеличиваем счетчик
}
?>

				
			

В этом примере переменная $counter начинается с 1. Цикл while будет продолжаться, пока значение $counter меньше или равно 5. После каждого выполнения кода внутри цикла $counter увеличивается на 1.

Пример с пользовательским вводом:

				
					<?php
$input = "";

while (empty($input)) {
    echo "Please enter your name: ";
    $input = trim(fgets(STDIN)); // Получаем ввод пользователя из командной строки
}

echo "Hello, $input!";
?>

				
			

Здесь цикл продолжает запрашивать имя пользователя, пока ввод не будет непустым. fgets(STDIN) используется для чтения ввода пользователя из командной строки, а trim() удаляет пробелы по краям строки.

4. Распространённые ошибки

4.1 Ошибка: Бесконечный цикл

Если условие в цикле while всегда истинно, это приведет к бесконечному выполнению цикла, что может привести к зависанию скрипта или перегрузке ресурсов.

Пример ошибки:

				
					<?php
$count = 1;

while ($count <= 5) {
    echo "Count: $count\n";
    // Отсутствует изменение переменной $count
}
?>

				
			

В этом примере переменная $count не изменяется внутри цикла, поэтому условие всегда истинно, и цикл выполняется бесконечно.

Решение: Убедитесь, что условие в цикле может стать ложным в какой-то момент, или добавьте логику для изменения условия внутри цикла.

4.2 Ошибка: Проблемы с логикой условия

Иногда условие цикла может быть сформулировано неправильно, что приведет к неожиданному поведению.

Пример ошибки:

				
					<?php
$number = 10;

while ($number > 5) {
    echo "$number\n";
    $number -= 2; // Уменьшаем число, но условие неправильно
}
?>

				
			

В этом примере $number уменьшается, но условие должно быть $number >= 5 или ($number > 5) с корректным изменением переменной.

Решение: Убедитесь, что условие в цикле правильно отражает логику выполнения.

Заключение

Цикл while — это мощный инструмент для выполнения повторяющихся задач. Он позволяет вам повторять блок кода до тех пор, пока условие истинно. Правильное использование цикла while помогает избежать повторения кода и делает программу более гибкой и управляемой.

6. Тестовое задание

Для закрепления материала выполните следующее задание:

  1. Напишите программу, которая выводит числа от 1 до 10 с помощью цикла while.

  2. Создайте цикл while, который продолжает запрашивать у пользователя ввод числа до тех пор, пока он не введёт положительное число. Выведите введённое положительное число.

  3. Реализуйте функцию sumUntilLimit($limit), которая принимает число $limit и возвращает сумму всех чисел от 1 до $limit, используя цикл while.

Пример выполнения задания:

				
					<?php
// 1. Вывод чисел от 1 до 10
$count = 1;

while ($count <= 10) {
    echo "Number: $count\n";
    $count++;
}

// 2. Запрос положительного числа
$number = 0;

while ($number <= 0) {
    echo "Enter a positive number: ";
    $number = (int) trim(fgets(STDIN)); // Получаем ввод пользователя и преобразуем в целое число
}

echo "You entered: $number\n";

// 3. Функция для суммы чисел до лимита
function sumUntilLimit($limit) {
    $sum = 0;
    $current = 1;

    while ($current <= $limit) {
        $sum += $current;
        $current++;
    }

    return $sum;
}

echo "Sum until limit 5: " . sumUntilLimit(5) . "\n"; // Вывод: 15
?>

				
			

Удачи в выполнении задания и дальнейшем изучении PHP!

logo