break
(PHP 4, PHP 5, PHP 7)
break прерывает выполнение текущей структуры for, foreach, while, do-while или switch.
break принимает необязательный числовой аргумент, который сообщает ему выполнение какого количества вложенных структур необходимо прервать.
<?php
$arr = array('один', 'два', 'три', 'четыре', 'стоп', 'пять');
while (list(, $val) = each($arr)) {
if ($val == 'стоп') {
break; /* Тут можно было написать 'break 1;'. */
}
echo "$val<br />\n";
}
/* Использование дополнительного аргумента. */
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "Итерация 5<br />\n";
break 1; /* Выйти только из конструкции switch. */
case 10:
echo "Итерация 10; выходим<br />\n";
break 2; /* Выходим из конструкции switch и из цикла while. */
default:
break;
}
}
?>
Версия | Описание |
---|---|
5.4.0 | break 0; больше не допускается. В предыдущих версиях это воспринималось точно также как и break 1;. |
5.4.0 | Удалена возможность передачи переменных (например, $num = 2; break $num;) в виде числового аргумента. |
Коментарии
You can also use break with parentheses: break(1);
Note:
Using more nesting level leads to fatal error:
<?php
while (true) {
foreach ([1, 2, 3] as $value) {
echo 'ok<br>';
break 3; // Fatal error: Cannot 'break' 3 levels
}
echo 'jamais exécuter';
break;
}
?>
@ei dot dwaps at gmail dot com
To break more than 2 levels you must have more than 2 structure.
In your example you have 2 structures : while and foreach and you try to break three.
Test with 3 structures and it works ;), example with adding for loop :
<?php
for ($i = 0; $i > 5; ++$i) {
while (true) {
foreach ([1, 2, 3] as $value) {
echo 'ok<br>';
break 3; // Fatal error: Cannot 'break' 3 levels
}
echo 'jamais exécuter';
break;
}
}