Досрочно закончить исполнение цикла в PHP можно разными способами. Хотя конструкций циклов в PHP много, но принципы одинаковые. Для примера будем использовать цикл for.
1 2 3 4 5 6 7 |
<?php for ($k=0; $k < 10; $k++) { echo "$k/"; if ($k == 5) break; } //увидим : 0/1/2/3/4/5/ ?> |
Цикл досрочно завершится с помощью оператора break после вывода пятерки. Для прерывания вложенных циклов, оператору break нужно сообщить кол-во вложений. В следующем примере мы прерываем вложенность из двух циклов.
1 2 3 4 5 6 7 8 |
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo "$j-$k/"; if ($k == 5) break 2; } //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?> |
Прерывание цикла с помощью оператора goto
В php с 5й версии появляется оператор goto. Природа оператора goto естественна сама по себе, так как это один из базовых операторов на языке ассемблера, но некоторые специалисты и «философы от программирования» заявляют о недопустимости использования оператора прямого безусловного перехода в процедурных языках, т.к. это «расхолаживает» программиста. Но что нам до философии?
Изменим код предыдущего примера, используя goto:
1 2 3 4 5 6 7 8 9 |
<?php for ($j=0; $j < 3; $j++) for ($k=0; $k < 10; $k++) { echo "$j-$k/"; if ($k == 5) goto exit_circle_point; } exit_circle_point: //увидим : 0-0/0-1/0-2/0-3/0-4/0-5/ ?> |
Результат будет аналогичен.
Goto имеет ряд ограничений по применению, с ними лучше всего ознакомиться в мануале по PHP.