- Циклы в PHP: for и while, а также операторы break и continue
- PHP: break, continue и goto
- continue
- goto
- Использование циклов в PHP
- Foreach – перебор массива
- Результат:
- Альтернативный синтаксис foreach
- For – цикл с счетчиком
- Результат:
- Альтернативный синтаксис
- Результат:
- Альтернативный синтаксис for
- While – цикл с предусловием
- Результат:
- Альтернативный синтаксис while
- Do-while – цикл с постусловием
- Результат:
- Управление циклами
- Break
- Continue
- Результат:
- Php for пропуск цикла
- User Contributed Notes 20 notes
- PHP Break and Continue
- Example
- PHP Continue
- Example
- Break and Continue in While Loop
- Break Example
- Continue Example
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
Циклы в PHP: for и while, а также операторы break и continue
Циклы в PHP позволяют повторять определенные действия (запуск функций, вывод значений, расчет переменных) заданное количество раз, пока не выполнится условие.
Посколько к циклам в PHP прибегают довольно часто, то существует множество их подвидов.
for — основной цикл в php, в котором мы прописываем три обязательных выражения. 1 — начальное значение счетчика, 2 — условие, по достижению которого цикл остановится, 3 — интерация счетчика (увеличиваем его или уменьшаем)
$rez = ‘Старт насчет: ‘;
for ($i = 1; $i
echo $rez; //Старт насчет: 12345
?>
while — это один из самых простых циклов, который будет исполнять код, пока условие в круглых скобках не выполнится (цикл с предусловием):
$i = 1; $rez = ‘Старт насчет: ‘;
while ($i $rez .= $i;
$i++; >
echo $rez; //Старт насчет: 12345
?>
В этом примере будут выполняться действия внутри фигурных скобок. Обратите внимание на $i счетчик — он увеличивается на единицу каждый цикл. При достижении условия, когда $i станет больше 5, цикл while остановится.
В while и for циклы можно писать несколько условий сразу, например: while ($i
do. while цикл — работает также, как и обычный while, но позволяет выполнить действие минимум один раз, даже если условие в while не выполняется (цикл с постусловием):
$i = 1; $rez = ‘Старт насчет: ‘;
do $rez .= $i;
$i++; >
while ($i echo $rez; //Старт насчет: 12345
?>
Здесь результат будет такой же, как и в 1 примере, но если мы поставим заведомо ложную проверку while(0); — результат будет таким «Старт насчет: 1». Т.е. цикл выполнится один раз.
Операторы break и continue для работы с циклами.
break позволяет остановить работу цикла. Это бывает полезным, если вы нашли какое-то значение и чтобы не тратить ресурсы на дальнейшее вычисление — просто остановить цикл.
$rez = ‘Старт насчет: ‘;
for ($i = 1; $i $rez .= $i;
if($i == 3) break;
>
echo $rez; //Старт насчет: 123
?>
При достижении $i значения равным 3, мы остановим выполнение скрипта.
Если у вас двойной цикл, то при указании числа в break, мы указываем какой цикл останавливать (по умолчанию останавливается всегда текущий — откуда был запущен):
$rez = ‘Старт насчет: ‘;
for ($i = 1; $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 — позволяет сделать интерацию цикла, т.е. пропустить один цикл:
В этом примере при $i = 4, произойдет пропуск цикла и в $rez, не добавится значение, а $i станет равным 5, поэтому на выходе мы увидим: 1235
PHP: break, continue и goto
Часто бывает удобно при возникновении некоторых условий иметь возможность досрочно завершить цикл. Такую возможность предоставляет оператор break . Он работает с такими конструкциями как: while, do while, for, foreach или switch .
Оператор break может принимать необязательный числовой аргумент, который сообщает ему, выполнение какого количества вложенных структур необходимо завершить. Значением числового аргумента по умолчанию является 1, при котором завершается выполнение текущего цикла. Если в цикле используется оператор switch , то break/break 1 выходит только из конструкции switch .
\n"; break 1; /* Выход только из конструкции switch. */ case 10: echo "Итерация 10; выходим
\n"; break 2; /* Выход из конструкции switch и из цикла while. */ > > // другой пример for ($bar1 = -4; $bar1 < 7; $bar1++) < // проверка деления на ноль if ($bar1 == 0) < echo 'Выполнение остановлено: деление на ноль невозможно.'; break; >echo "50/$bar1 = ",50/$bar1,"
"; > ?>
Разумеется, иногда вы предпочли бы просто пропустить одну из итераций цикла, а не завершать полностью работу цикла, в таком случае это делается с помощью оператора continue .
continue
Для остановки обработки текущего блока кода в теле цикла и перехода к следующей итерации можно использовать оператор continue . От оператора break он отличается тем, что не прекращает работу цикла, а просто выполняет переход к следующей итерации.
Оператор continue также как и break может принимать необязательный числовой аргумент, который указывает на скольких уровнях вложенных циклов будет пропущена оставшаяся часть итерации. Значением числового аргумента по умолчанию является 1, при которой пропускается только оставшаяся часть текущего цикла.
"; continue; > echo "50/$bar1 = ",50/$bar1,"
"; > ?>
Обратите внимание: в процессе работы цикла было пропущено нулевое значение переменной $counter , но цикл продолжил работу со следующего значения.
goto
goto является оператором безусловного перехода. Он используется для перехода в другой участок кода программы. Место, куда необходимо перейти в программе указывается с помощью метки (простого идентификатора), за которой ставится двоеточие. Для перехода, после оператора goto ставится желаемая метка.
Простой пример использования оператора goto :
Оператор goto имеет некоторые ограничение на использование. Целевая метка должна находиться в том же файле и в том же контексте, это означает, что вы не можете переходить за границы функции или метода, а так же не можете перейти внутрь одной из них. Также нельзя перейти внутрь любого цикла или оператора switch . Но его можно использовать для выхода из этих конструкций (из циклов и оператора switch ). Обычно оператор goto используется вместо многоуровневых break .
"; > echo 'после цикла - до метки'; // инструкция не будет выполнена end: echo 'После метки'; ?>
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2023 © puzzleweb.ru
Использование циклов в PHP
PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.
Foreach – перебор массива
Предназначен для перебора элементов массива.
$array = array( 1 => 'Значение 1', 2 => 'Значение 2', 3 => 'Значение 3', 4 => 'Значение 4', ); // Вывод ключей foreach ($array as $key => $val) < echo $key . '
'; > // Вывод значений foreach ($array as $key => $val) < echo $val . '
'; >
Результат:
1 2 3 4 Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис foreach
For – цикл с счетчиком
Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.
// Счетчик от 0 до 5 for ($n = 0; $n // Счетчик от 5 до 0 for ($n = 5; $n >= 0; $n--)
Результат:
Альтернативный синтаксис
$array = array( 'Значение 1', 'Значение 2', 'Значение 3', 'Значение 4', ); for ($n = 0; $n < count($array); $n++) < echo $array[$n] . '
'; >
Результат:
Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис for
While – цикл с предусловием
Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.
Результат:
Альтернативный синтаксис while
Do-while – цикл с постусловием
В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.
Результат:
Управление циклами
Break
Вызов break или break 1 в цикле останавливает его.
Для вложенных циклов используется break 2 и т.д.
Continue
Используется для пропуска итерации.
Результат:
Для вложенных циклов по аналогии с break 2 , break 3 – continue 2 , continue 3 .
Php for пропуск цикла
continue используется внутри циклических структур для пропуска оставшейся части текущей итерации цикла и, при соблюдении условий, начала следующей итерации.
Замечание: В PHP оператор switch считается циклическим и внутри него может использоваться continue . Если continue не передано аргументов, то он ведёт себя аналогично break , но выдаёт предупреждение о возможной ошибке. Если switch расположен внутри цикла, continue 2 продолжит выполнение внешнего цикла со следующей итерации.
continue принимает необязательный числовой аргумент, который указывает на скольких уровнях вложенных циклов будет пропущена оставшаяся часть итерации. Значением по умолчанию является 1 , при которой пропускается оставшаяся часть текущего цикла.
$i = 0 ;
while ( $i ++ < 5 ) echo "Снаружи
\n» ;
while ( 1 ) echo «В середине
\n» ;
while ( 1 ) echo «Внутри
\n» ;
continue 3 ;
>
echo «Это никогда не будет выведено.
\n» ;
>
echo «Это тоже.
\n» ;
>
?>
Пропуск точки запятой после continue может привести к путанице. Пример как не надо делать.
Ожидается, что результат будет такой:
Версия | Описание |
---|---|
7.3.0 | continue внутри switch , использующееся как замена break для switch будет вызывать ошибку уровня E_WARNING . |
User Contributed Notes 20 notes
The remark «in PHP the switch statement is considered a looping structure for the purposes of continue» near the top of this page threw me off, so I experimented a little using the following code to figure out what the exact semantics of continue inside a switch is:
for( $i = 0 ; $i < 3 ; ++ $i )
echo ‘ [‘ , $i , ‘] ‘ ;
switch( $i )
case 0 : echo ‘zero’ ; break;
case 1 : echo ‘one’ ; XXXX ;
case 2 : echo ‘two’ ; break;
>
echo ‘ ‘ ;
>
— continue 1
— continue 2
— break 1
— break 2
and observed the different results. This made me come up with the following one-liner that describes the difference between break and continue:
continue resumes execution just before the closing curly bracket ( > ), and break resumes execution just after the closing curly bracket.
Corollary: since a switch is not (really) a looping structure, resuming execution just before a switch’s closing curly bracket has the same effect as using a break statement. In the case of (for, while, do-while) loops, resuming execution just prior their closing curly brackets means that a new iteration is started —which is of course very unlike the behavior of a break statement.
In the one-liner above I ignored the existence of parameters to break/continue, but the one-liner is also valid when parameters are supplied.
PHP Break and Continue
You have already seen the break statement used in an earlier chapter of this tutorial. It was used to «jump out» of a switch statement.
The break statement can also be used to jump out of a loop.
This example jumps out of the loop when x is equal to 4:
Example
PHP Continue
The continue statement breaks one iteration (in the loop), if a specified condition occurs, and continues with the next iteration in the loop.
This example skips the value of 4:
Example
Break and Continue in While Loop
You can also use break and continue in while loops:
Break Example
Continue Example
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.