В основном continue позволяет вам сэкономить количество фигурных скобок в коде и увеличить его удобочитаемость. Это чаще всего бывает нужно в циклах-фильтрах, когда требуется перебрать некоторое количество объектов и выбрать из них только те, которые удовлетворяют определенным условиям. Например, вот цикл, который обнуляет те элементы массива $A, которые удовлетворяют нескольким условиям:
for($i=0; $i<count($A); $i++) {
if(!óñëîâèå1($A[$i])) continue;
. . .
if(!óñëîâèåN($A[$i])) continue;
$A[$i]=0;
}
Грамотное использование break
и continue — искусство, позволяющее заметно улучшить "читабельность" кода и количество блоков else. Возможно, в приведенных выше примерах оно и не было абсолютно оправданным, но, я уверен, рано или поздно вам придется столкнуться с ситуацией, когда без этих инструкций не обойтись.
Нетрадиционное использование
do-while и break
Есть один интересный побочный эффект, который дает нам инструкция break, и который довольно удобно использовать для обхода "лишних" операторов (кстати, его можно применять и в Си). Необходимость такого обхода возникает довольно часто, причем именно при программировании сценариев. Рассмотрим соответствующий пример (листинг 9.2):
Листинг 9.2. Модель сценария для обработки формы
. . .
$WasError=0; // èíäèêàòîð îøèáêè — åñëè íå 0, òî áûëà îøèáêà
// Åñëè íàæàëè êíîïêó Submit (ñ èìåíåì $doSubmit)...
if(@$doSubmit) do {
// Ïðîâåðêà âõîäíûõ äàííûõ