Циклы в PHP позволяют повторять определенные действия (запуск функций, вывод значений, расчет переменных) заданное количество раз, пока не выполнится условие.
Посколько к циклам в PHP прибегают довольно часто, то существует множество их подвидов.
for - основной цикл в php, в котором мы прописываем три обязательных выражения. 1 - начальное значение счетчика, 2 - условие, по достижению которого цикл остановится, 3 - интерация счетчика (увеличиваем его или уменьшаем)
<?php
$rez = 'Старт насчет: ';
for ($i = 1; $i <= 5; $i++) { $rez .= $i; }
echo $rez; //Старт насчет: 12345
?>
Изначально $i равен 1, проверяем условие 1 <= 5 - это правда - выполняем цикл, по завершении которого, увеличиваем $i на 1. Когда условие выполняться не будет (i станет больше 5), цикл остановится.
while - это один из самых простых циклов, который будет исполнять код, пока условие в круглых скобках не выполнится (цикл с предусловием):
<?php
$i = 1; $rez = 'Старт насчет: ';
while ($i <= 5) {
$rez .= $i;
$i++; }
echo $rez; //Старт насчет: 12345
?>
В этом примере будут выполняться действия внутри фигурных скобок. Обратите внимание на $i счетчик - он увеличивается на единицу каждый цикл. При достижении условия, когда $i станет больше 5, цикл while остановится.
В while и for циклы можно писать несколько условий сразу, например: while ($i <= 5 && name == 'Гриша')
do...while цикл - работает также, как и обычный while, но позволяет выполнить действие минимум один раз, даже если условие в while не выполняется (цикл с постусловием):
<?php
$i = 1; $rez = 'Старт насчет: ';
do {
$rez .= $i;
$i++; }
while ($i <= 5);
echo $rez; //Старт насчет: 12345
?>
Здесь результат будет такой же, как и в 1 примере, но если мы поставим заведомо ложную проверку while(0); - результат будет таким "Старт насчет: 1". Т.е. цикл выполнится один раз.
Операторы break и continue для работы с циклами.
break позволяет остановить работу цикла. Это бывает полезным, если вы нашли какое-то значение и чтобы не тратить ресурсы на дальнейшее вычисление - просто остановить цикл.
<?php
$rez = 'Старт насчет: ';
for ($i = 1; $i <= 5; $i++) {
$rez .= $i;
if($i == 3) break;
}
echo $rez; //Старт насчет: 123
?>
При достижении $i значения равным 3, мы остановим выполнение скрипта.
Если у вас двойной цикл, то при указании числа в break, мы указываем какой цикл останавливать (по умолчанию останавливается всегда текущий - откуда был запущен):
<?php
$rez = 'Старт насчет: ';
for ($i = 1; $i <= 100; $i++) {
$rez .= $i;
$a = 1;
while($a<50) {
$rez .= '_';
if($a == 2) break 1; /* Выходим из цикла while. */
if($a == 2) break 2; /* Выходим из цикла while и for */
$a++;
} }
echo $rez;
?>
Здесь, при break 1 мы останавливаем только текущий цикл while при каждой новой интерации из цикла for (когда $a = 2). Если бы этого условия не было, то печатались все 50 нижних подчеркиваний. При break 2 останавливаются оба цикла и на выходе 1__
continue - позволяет сделать интерацию цикла, т.е. пропустить один цикл:
<?php
$rez = '';
for ($i = 1; $i <= 5; $i++) {
if($i == 4) continue;
$rez .= $i; //1235
}
echo $rez;
?>
В этом примере при $i = 4, произойдет пропуск цикла и в $rez, не добавится значение, а $i станет равным 5, поэтому на выходе мы увидим: 1235
Добавить комментарий