Содержание

PHP: break, continue и goto

  • break
  • continue
  • goto

break

Часто бывает удобно при возникновении некоторых условий иметь возможность досрочно завершить цикл. Такую возможность предоставляет оператор break. Он работает с такими конструкциями как: while, do while, for, foreach или switch.

Оператор break может принимать необязательный числовой аргумент, который сообщает ему, выполнение какого количества вложенных структур необходимо завершить. Значением числового аргумента по умолчанию является 1, при котором завершается выполнение текущего цикла. Если в цикле используется оператор switch, то break/break 1 выходит только из конструкции switch.


<?php

  $j = 0;
  
  while (++$j) {
    switch ($j) {
      case 5:
        echo "Итерация 5<br>\n";
        break 1;  /* Выход только из конструкции switch.
*/ case 10: echo "Итерация 10; выходим<br>\n"; break 2; /* Выход из конструкции switch и из цикла while. */ } } // другой пример for ($bar1 = -4; $bar1 < 7; $bar1++) { // проверка деления на ноль if ($bar1 == 0) { echo 'Выполнение остановлено: деление на ноль невозможно.'; break; } echo "50/$bar1 = ",50/$bar1,"<br>"; } ?>

Разумеется, иногда вы предпочли бы просто пропустить одну из итераций цикла, а не завершать полностью работу цикла, в таком случае это делается с помощью оператора continue

.

continue

Для остановки обработки текущего блока кода в теле цикла и перехода к следующей итерации можно использовать оператор continue. От оператора break он отличается тем, что не прекращает работу цикла, а просто выполняет переход к следующей итерации.

Оператор continue также как и break может принимать необязательный числовой аргумент, который указывает на скольких уровнях вложенных циклов будет пропущена оставшаяся часть итерации. Значением числового аргумента по умолчанию является 1, при которой пропускается только оставшаяся часть текущего цикла.


<?php

  for ($bar1 = -4; $bar1 < 7; $bar1++) {
    // проверка деления на ноль
    if ($bar1 == 0) {
      echo "Итерация пропущена из-за попытки деления на ноль.
"; continue; } echo "50/$bar1 = ",50/$bar1,"<br>"; } ?>

Обратите внимание: в процессе работы цикла было пропущено нулевое значение переменной $counter, но цикл продолжил работу со следующего значения.

goto

goto является оператором безусловного перехода. Он используется для перехода в другой участок кода программы. Место, куда необходимо перейти в программе указывается с помощью метки (простого идентификатора), за которой ставится двоеточие. Для перехода, после оператора

goto ставится желаемая метка.

Простой пример использования оператора goto:


<?php

  goto foo;       // указываем желаемую метку
  echo 'hello';
 
  foo:            // указываем место куда нужно перейти
  echo 'world';

?>

Оператор goto имеет некоторые ограничение на использование. Целевая метка должна находиться в том же файле и в том же контексте, это означает, что вы не можете переходить за границы функции или метода, а так же не можете перейти внутрь одной из них. Также нельзя перейти внутрь любого цикла или оператора

switch. Но его можно использовать для выхода из этих конструкций (из циклов и оператора switch). Обычно оператор goto используется вместо многоуровневых break.


<?php

  for ($numb = 0; $numb < 100; $numb++) {
    if ($numb == 5) // если значение переменной $numb == 5
      goto end;     // переходим к выполнению инструкций следующих за меткой
	  
	echo "\$numb = $numb
"; } echo 'после цикла - до метки'; // инструкция не будет выполнена end: echo 'После метки'; ?>

С этой темой смотрят:

  • Цикл while (do while)
  • Цикл for
  • Цикл foreach, перебор элементов массива

Операторы break и continue для работы с циклами в PHP

#loops #break #continue #операторы

14539

429

Очень часто при работе с циклами требуется пропустить итерацию из-за каких-то условий, и перейти к следующей.

Кроме того, порой и вовсе нужно прервать цикл ещё до того, как он должен был завершиться. Для этого используются специальные операторы – continue (для перехода к следующей итерации) и break (остановка цикла).

Чтобы было понятнее, я предлагаю рассмотреть несколько практических примеров, которые позволят понять, когда же именно могут понадобиться эти операторы.

Пример использования break

Давайте напишем небольшой скрипт, который будет искать число в массиве. Для начала определим массив и число:

<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;

А теперь давайте напишем простейший цикл, внутри которого мы будем выяснять, есть ли искомое число в массиве, или нет.

Новые вакансии

Все вакансииРазместить вакансию бесплатно

<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;
$isNumberFound = false;
foreach ($array as $item) {
    echo 'Сравниваем с числом элемент ' .  $item . '<br>';
    if ($item === $number) {
        $isNumberFound = true;
    }
}
echo $isNumberFound ? 'Число найдено' : 'Число не найдено';

Перед циклом мы создали переменную $isNumberFound, которая будет хранить информацию о том, найдено ли число в массиве или нет. Изначально она равна

false.

Затем мы начинаем идти по массиву и сравнивать каждый его элемент с числом. Если совпадение найдено, то значение переменной $isNumberFound становится равной true, и теперь мы уже знаем, что искомое число в массиве есть.

При этом на каждой итерации перед проверкой мы выводим информацию о том, какое сравнение сейчас производится.

Онлайн тесты

  • Тест на знание основ HTML
  • Тест на знание основ PHP
  • Тест на знание ООП в PHP

Все тесты

При этом мы видим, что все элементы массива сравнивались с числом. И мы понимаем, что нам было бы достаточно найти число и на этом завершить работу цикла.

С помощью оператора break это сделать проще простого!

<?php
$array = [2, 3, 6, 1, 23, 2, 56, 7, 1, 15];
$number = 1;
$isNumberFound = false;
foreach ($array as $item) {
    echo 'Сравниваем с числом элемент ' . $item . '<br>';
    if ($item === $number) {
        $isNumberFound = true;
        break;
    }
}
echo $isNumberFound ? 'Число найдено' : 'Число не найдено';

Просто останавливаем работу цикла, как только искомое число найдено. При этом мы видим, что скрипт завершился с гораздо меньшим числом действий.

Таким образом, мы сделали нашу программу более оптимизированной, так как она больше не делает лишних действий. Ещё один пример по теме вы найдёте в домашнем задании.

Пример использования continue

Не менее редко при каких-то условиях требуется перейти к следующей итерации, не доходя до конца текущей. К примеру – мы хотели бы вывести все числа от 1 до 20, за исключением тех, что делятся на 3 без остатка.

Мы могли бы решить эту задачу с помощью условия – если остаток от деления на 3 не равен нулю, то вывести число.

<?php
for ($i = 1; $i <= 20; $i++) {
    if ($i % 3 != 0) {
        echo $i;
        echo ' ';
    }
}

Результат будет следующим:

Однако, это можно сделать более изящно. А именно – если число делится на 3 без остатка, то просто переходить к следующей итерации и ничего не делать. А внутри тела цикла, уже вне каких-либо условий, выполнять какой-то код.

Выглядеть это будет так.

<?php
for ($i = 1; $i <= 20; $i++) {
    if ($i % 3 === 0) {
        continue;
    }
    echo $i;
    echo ' ';
}

Результат работы этого кода будет таким же, как и в предыдущем случае. Но с точки зрения сложности чтения и понимания, код упростился. Я понимаю, сейчас трудно уловить эту тонкую грань, но подумайте вот о чём. В задании мы говорили о том, чтобы вывести числа, не делящиеся на 3 без остатка. Значит эти числа – первичны. А остальные числа, которые делятся на 3, нам не нужны. Значит они для нас должны иметь второстепенное значение. И в цикле мы просто отсекаем лишнее, а затем идёт основной алгоритм – вывод того, что нам нужно.

Я не жду от вас, что вы сейчас полностью поймёте о чём я говорю, но будьте уверены – со временем вы к этому придёте через практику.

А сейчас – за домашнее задание.

#loops #break #continue #операторы

14539

429

PHP Перерыв и продолжение

❮ Предыдущий Далее ❯


PHP Break

Вы уже видели оператор break , используемый в предыдущей главе этого руководства. Он использовался для «выпрыгивания» из оператора switch .

Оператор break также может использоваться для выхода из цикла.

Этот пример выходит из цикла, когда x равно 4 :

Пример

для ($x = 0; $x < 10; $x++) {
 если ($x == 4) {
перерыв;
  }
  echo «Число: $x
«;
}
?>

Попробуйте сами »


PHP Continue

Оператор continue прерывает одну итерацию (в цикле), если выполняется заданное условие, и продолжает следующую итерацию в цикле.

Этот пример пропускает значение 4 :

Пример

for ($x = 0; $x < 10; $x++) {
  если ($x == 4) {
продолжать;
  }
  echo «Число: $x
«;
}
?>

Попробуйте самостоятельно »



Перерыв и продолжитесь, пока цикл

Вы также можете использовать Break и Продолжить в , а петли:

Пример перерыва

$x = 0;

в то время как ($x < 10) {
  если ($x == 4) {
перерыв;
  }
  echo «Число: $x
«;
  $х++;
}
?>

Попробуйте сами »

Продолжить пример

$x = 0;

в то время как ($x < 10) {
  если ($x == 4) {
$х++;
    продолжить;
  }
  echo «Число is: $x
«;
  $x++;
}
?>

Попробуйте сами »

❮ Предыдущая Следующий ❯


ВЫБОР ЦВЕТА



Лучшие учебники
Учебник по HTML
Учебник CSS
Учебник JavaScript
Учебник How To
Учебник SQL
Учебник Python
Учебник W3. CSS
Учебник Bootstrap
Учебник PHP
Учебник Java
Учебник C++
Учебник jQuery


2 Top 9 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

3

О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.

Copyright 1999-2023 Refsnes Data. Все права защищены.
W3Schools использует W3.CSS.

PHP break Ключевое слово

❮ Ключевые слова PHP

Пример

Выход из цикла:

$cars = [«Ford», «Volvo», «BMW»];
foreach($cars as $car) {
 эхо $ автомобиль;
  эхо «
«;
  if($car == «Вольво») {
перерыв;
  }
}
?>

Попробуйте сами »


Определение и использование

Ключевое слово break используется для выхода из для циклов, foreach циклов, while циклов, do..while циклов и переключателей условий.

В блоке switch весь код, следующий за оператором case, будет выполняться до тех пор, пока найдено ключевое слово break. Это также может быть код, принадлежащий другому делу.


Связанные страницы

Ключевое слово switch .

Используйте continue ключевое слово, чтобы завершить текущую итерацию в цикле, но продолжить со следующей.

Узнайте больше о прерывании и продолжении в нашем учебном пособии по PHP Break and Continue.

Узнайте больше о циклах в нашем учебнике по циклам PHP.

Узнайте больше об условных выражениях switch в нашем Учебном руководстве по оператору PHP switch.


Дополнительные примеры

Пример

Использование break в операторе switch:

$favcolor = «красный»;

переключатель ($favcolor) {
  case «red»:
    echo «Ваш любимый цвет — красный!»;
    перерыв;
case «blue»:
    echo «Ваш любимый цвет синий!»;
    перерыв;
case «green»:
    echo «Ваш любимый цвет — зеленый!»;
перерыв;
по умолчанию:
    echo «Ваш любимый цвет не красный, синий и зеленый!»;
}
?>

Попробуйте сами »


❮ Ключевые слова PHP


ВЫБОР ЦВЕТА



Лучшие учебники
Учебник по HTML
Учебник по CSS
Учебник по JavaScript
Учебник How To
Учебник по SQL
Учебник по Python
Учебник по W3. CSS
Учебник по Bootstrap
Учебник по PHP
Учебник по Java
Учебник по C++
Учебник по jQuery

3 900 Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery

Основные примеры
Примеры HTML
Примеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3.CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery

3

О

W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания.