6.8: Безусловный оператор Break
Главная Страница » Книги по PHP » Самоучитель PHP 5 для чайников с примерами » Безусловный оператор Break
Безусловные операторы в основном предназначены для работы с циклами. В некоторых случаях они существенно упрощают алгоритм программы и делают код более понятным. Тем не менее их применение считается нежелательным, так как в блоках программ, содержащих безусловные операторы, наиболее часто встречаются ошибки. Используйте их с особой осторожностью.
Применение оператора break не ограничивается конструкцией switch. Он очень часто применяются в циклах, причем имеющих поисковый характер. Например, мы хотим выяснить, есть ли книги в магазине объемом более 400 страниц, причем нас не интересует их количество. Предположим, что у нас имеется список этих книг с соответствующей информацией. Начиная с первой книги, мы будем сравнивать количество страниц с числом 400. Как только мы встретили книгу, удовлетворяющую поисковому критерию, надо вывести соответствующее сообщение и выйти из цикла. Именно эту функцию и выполняет оператор break. Вспомним случай с бесконечным циклом for. С помощью break мы свободно можем из него выйти (листинг 6.20).
Листинг 6.20. Оператор break.
‹?php
$i=1;
for (;;)
{
echo $i;
$i++;
if ($i>10) break;
}
?›
В этом случае «бесконечный» цикл выполнится всего 10 раз, так как после выполнения условия $i > 10 следует оператор break.
На практике очень часто применяют вложенные циклы, то есть циклы, выполняющиеся внутри тела другого цикла (листинг 6.21).
Листинг 6.21. Параметр оператора break.
‹html›
‹head›
‹title›Особенности оператора break‹/title›
‹/head›
‹body›
‹?php
for ($i=1; $i<=10; $i++)
{
for ($j=1; $j<=10; $j++)
{
$sum++;
if (($j + ($i-1)*10) == 55) break 2;
}
}
echo $sum;
?›
‹/body›
‹/html›
Отличительной чертой break в PHP является его параметр, указывающий на цикл, из которого нужно выйти. По умолчанию он равен 1, что означает выход из текущего цикла. В нашем примере мы использовали параметр, который равен 2. В результате выход произошел на 55 итерации (это количество считает переменная $sum), так как мы прервали внешний цикл. Попробуйте убрать этот параметр и подумайте, почему получается именно такой результат (95).