PHP скрипты

MySQL

Apache

phpMyADmin

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).

Поделиться с друзьями