PHP: 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 'После метки'; ?>

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

puzzleweb.ru

Циклы в PHP

Циклы

Последнее обновление: 1.11.2015

Для совершения повторяемых действий в PHP, как и в других языках программирования, используются циклы. В PHP имеются следующие виды циклов:

Цикл for

Цикл for имеет следующее формальное определение:


for ([инициализация счетчика]; [условие]; [изменение счетчика])
{
    // действия
}

Рассмотрим стандартный цикл for:


<?php
for ($i = 1; $i < 10; $i++)
{
    echo "Квадрат числа $i равен " . $i * $i . "<br/>";
}
?>

Первая часть объявления цикла — $i = 1 — создает и инициализирует счетчик — переменную $i. И перед выполнением цикла его значение будет равно 1. По сути это то же самое, что и объявление переменной.

Вторая часть — условие, при котором будет выполняться цикл. В данном случае цикл будет выполняться, пока $i не достигнет 10.

Третья часть — приращение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: $i—.

В итоге блок цикла сработает 9 раз, пока значение $i не станет равным 10. И каждый раз это значение будет увеличиваться на 1. Каждое отдельное повторение цикла называется итерацией. Таким образом, в данном случае произойдет 9 итераций.

Цикл while

Цикл while проверяет истинность некоторого условия, и если условие истинно, то выполняются блок выражений цикла:


<?php
$counter = 1;
while($counter<10)
{
	echo $counter * $counter . "<br />";
	$counter++;
}
?>

Если в блоке while всего одна инструкция, то фигурные скобки блока можно опустить:


<?php
$counter = 0;
while(++$counter<10)
	echo $counter * $counter . "<br />";
?>

Цикл do..while

Цикл do..while похож на цикл while, только теперь выполняется блок цикла, и только потом выполняется проверка условия. То есть даже если условие ложно, то блок цикла выполнится как минимум один раз:

<?php $counter = 1; do { echo $counter * $counter . "<br />"; $counter++; } while($counter<10) ?>

Операторы continue и break

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


<?php
for ($i = 1; $i < 10; $i++)
{
	$result = $i * $i;
	if($result>80)
	{
		break;
	}
    echo "Квадрат числа $i равен $result <br/>";
}
?>

И если вдруг результат операции окажется больше 80, то происходит выход из цикла.

Для управления циклами также применяется оператор continue. Он осуществляет переход к следующей итерации цикла:


<?php
for ($i = 1; $i < 10; $i++)
{
	if($i==5)
	{
		continue;
	}
    echo "Квадрат числа $i равен " . $i * $i . "<br/>";
}
?>

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

metanit.com

Цикл WHILE в PHP | Примеры, использование нескольких условий

Цикл WHILE выполняется, пока выражение в скобках принимает значение true. Здесь нам наконец-то понадобится оператор инкремента ++, увеличивающий значение переменной на единицу.

Разберём на примере: необходимо вывести на экран числа от 1 до 10. С помощью цикла while эту задачу можно решить следующим образом:

<?php
    $i = 0;

    while($i < 10)
        echo ++$i;
?>

Результат в браузере:

12345678910

Перед запуском PHP получает результат выражения в круглых скобках и приводит к булеву типу. Если он получит true — блок кода выполнится. Затем опять произойдёт вычисление результата выражения и повторное выполнение блока кода. И так до тех пор, пока результатом выражения не станет false.

Переменная $i создана нами специально — она выступает в роли счётчика и гарантирует, что скрипт будет выполнен столько раз, сколько нам нужно.

Будьте аккуратны при работе с циклом while. Вы можете случайно сделать бесконечный цикл вроде такого:

<?php
    while(true)
        echo 'Привет!';
?>

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

Цикл WHILE и несколько условий

При желании в цикл WHILE можно подставить сколько угодно условий:

<?php
$a = 5;
$b = 10;
$c = 0;

while($a < 10 && $b < 20 && $c < 10)
	echo ++$a;

Задача 1

1. Создайте переменную $count с любым числовым значением, например 10.
2. С помощью цикла while выведите числа, количество которых равно $count, начиная с числа 1. Каждое последующее число должно быть больше предыдущего на 3. Т.е. при $count = 3 скрипт должен вывести 1 4 7.

Показать решение
$count = 10;
$num = -2;
$i = 0;

while($i < $count)
{
	$num += 3;
	echo $num, ' ';
	$i++;
}

Другой вариант:

$count = 10;
$i = 0;

while($i < $count)
{
	$result = $i === 0 ? 1 : 1 + $i * 3;
	echo $result, ' ';
	
	// Или в одну строку: 
	# echo ($i === 0 ? 1 : 1 + $i * 3), ' ';
	
	$i++;
}

Задача 2

1. Создайте следующий массив: $arr = [3, 4, 9, 18, 22];
2. Напишите скрипт, который с помощью while переберёт все значения массива и выведет их на экран.

Показать решение
<?php
$arr = [3, 4, 9, 18, 22];
$i = 0;

while($i < count($arr))
	echo $arr[$i++], ' ';

www.programulin.ru

Цикл PHP foreach: два способа его использования

Цикл PHP foreach можно использовать следующим образом:

foreach($array_name as $value){
 
//код, который должен выполняться
 
}

Или так:

foreach($array_name as $key =>$value){
 
// //код, который должен выполняться
 
}

В этом примере мы создадим массив из пяти элементов с числовыми значениями. После этого цикл PHP foreach будет использован для выполнения итерации этого массива. Внутри цикла foreach мы использовали echo, чтобы вывести значения массива:


Посмотреть демо-версию и код

В этом примере описан другой способ использования цикла foreach PHP. Для этого мы создали ассоциативный массив из трех элементов. В него входят имена сотрудников (в качестве ключей) и суммы заработной платы (в качестве значений):


Посмотреть демо-версию и код

Также можно c помощью PHP array foreach можно изменять значения элементов массива. Для этого используется «&» перед «$» для переменной значения. Например:

Значение будет изменено. Чтобы вам было понятнее, рассмотрим следующий пример.

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

Затем создали еще один цикл foreach, где перед $value_of_element добавляется «&«. Внутри фигурных скобок присваиваем новые значения элементам массива.

Чтобы увидеть разницу до и после присвоения новых значений, массив отображается с помощью функции print_r().


Посмотреть демо-версию и код

Цикл PHP foreach используется для работы с массивом. Он перебирает каждый его элемент.

Также можно использовать для работы с массивами цикл for. Например, используя свойство length, чтобы получить длину массива, а затем применить его в качестве оператора max. Но foreach делает это проще, так как он предназначен для работы с массивами.

Если вы работаете с MySQL, то для этого данный цикл подходит еще больше. Например, можно выбрать несколько строк из таблицы БД и передать их в массив. После этого, используя цикл foreach, перебрать все элементы массива с выполнением какого-либо действия.

Обратите внимание, что можно использовать цикл foreach с массивом или только с объектом.

В PHP существует два способа использования цикла foreach PHP. Оба описаны ниже.

  • Синтаксис первого метода использования:
foreach($array_name as $value){
 
echo $value
 
}

При этом нужно указать имя массива, а затем переменную $value.

Для каждой итерации значение текущего элемента присваивается переменной $value. После завершения итерации переменной присваивается значение следующего элемента. И так до тех пор, пока все элементы массива не будут перебраны.

  • Синтаксис второго метода (PHP foreach as key value):
foreach ($array_name as $key_of_element => $value_of_element){
 
//code to be executed here
 
}

Это подходит для ассоциативных массивов, в которых используются пары ключ / значение.

Во время выполнения каждой итерации значение текущего элемента будет присвоено переменной $value_of_element. Кроме этого ключ элемента присваивается переменной $key_of_element.

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

Данная публикация представляет собой перевод статьи «PHP foreach loop 2 ways to use it» , подготовленной дружной командой проекта Интернет-технологии.ру

www.internet-technologies.ru