Циклы: прерывание циклов в PHP. Инструкции break/continue
Ни один сайт не может обойтись без цикла foreach. Но важно разобраться с тем, как его правильно использовать и можно ли пропускать или прерывать итерации цикла.
Сам по себе foreach представляет собой лучшего помощника программиста веб-сайтов. Он встречается практически во всех кодах сайта и выполняет важную задачу – обход массив по элементам. Несмотря на то, что его синтаксис достаточно простой, понадобится время, чтобы вникнуть. Предлагаем начать с элементарного примера:
<?php
$a = array(‘один’, ‘два’, ‘три’);
foreach( $a as $b ){
echo $b;
echo'<br>’;
}
?>
Прописав такой код, на экране появится:
один
два
три
Рассмотрим все пошагово. В скобках foreach прописано $a as $b, что задает следующую команду: «бери все элементы массива $a по порядку и помещай их значение в массив $b. В результате программа берет первый элемент массива $a, а затем задает данное значение переменной $b.
В теле цикла выводится значение «echo $b;». Когда все команды из циклов будут выполнены, происходит вторая итерация: из массива $a берется второй элемент со значением ‘два’. Программа выполняет точно такое же действие. Все до тех пор, пока элементов в массиве не останется.
Приведем более сложный пример. Представьте, что у массива есть ключи и их тоже необходимо передавать. Для наглядности сделаем ключи в виде текста:
<?php
$a = array(
‘one’ =>’один’,
‘two’ =>’два’,
‘three’ =>’три’
);
foreach( $a as $b => $с ){
echo $b;
echo’ = ‘;
echo $c;
echo'<br>’;
}
?>
Как следствие, на экран выведется следующее содержание:
one = один
two = два
three = три
Как вы заметили, цикл отличается содержанием в скобках $a as $b => $с. Данное выражение означает следующую команду: «бери все элементы массива $a по порядку и помещай их в значение $c, а ключи элементов помещай в переменную $b.
Важно! Если вы измените значение переменных $с или $b, то значение переменной $a останется неизменным. Если нужно изменить значение элемента массива, используйте внутри цикла foreach конструкцию $a[$b] = ‘ваше_значение’. В таком случае, в массиве $a, в элементе с ключом $b, значение изменится на ‘ваше_значение’.
Прерывание цикла –break
Нередко случается, когда нужно прервать цикл, то есть выйти из него не продолжая. Тут на помощь приходит инструкция break. Приведем пример:
<?php
$a = array(‘один’, ‘два’, ‘три’);
foreach( $a as $b ){
if($b == ‘три’) break;
echo $b;
echo'<br>’;
}
?>
Такой код выведет на экран следующее содержимое:
один
два
Почему нет слова ‘три’? Обратите внимание на break в коде, который говорит программе о прерывании, в результате чего цикл завершается.
Следующая итерация цикла (continue)
Может быть и другая задача – не завершать цикл, а перейти к следующему элементу. С этой задачей поможет справится continue.
Пример:
<?php
$a = array(‘один’, ‘два’, ‘три’);
foreach( $a as $b ){
if($b == ‘два’) continue;
echo $b;
echo'<br>’;
}
?>
Такой код выведет на экран следующее содержимое:
один
три
Инструкция continue сработала на элементе со значением ‘два’, поэтому все дальнейшие команды не выполняются, а цикл начинается повторно, использовав следующий элемент массива — $a.
Внимание! Обе инструкции (continue и break) доступны не только для циклов foreach. Они успешно работают в циклах while и for. Эти инструкции оказывают воздействие исключительно на родительский цикл, где находятся. Поэтому если несколько циклов вложено один в другой, а инструкция стоит внутри второго, то она не воздействует на первый цикл.
Цикл goto
goto – оператор безусловного перехода, который применяется для перехода в другой участок кода. При этом используется метка, после которой ставится двоеточие. После оператора gotoдля перехода ставится желаемая метка (простой идентификатор).
Пример:
<?php
gotofoo; // указываемжелаемую метку
echo’hello’;foo: // указываемместокуданужно перейти
echo’world’;?>
Цикл while
При создании программы часто перед програмистом появляется еще одна цель – сделать однотипвное действие множество раз. К примеру, сделать так, чтобы товары из списка выводились один за другим. Для этой задачи отлично подойдет цикл while.
Пример:
while(condition){
// код
// также называемый «телом цикла»
}
Код из тела цикла выполняется, пока условие condition истинно.
К примеру, цикл ниже выводит i, пока i < 3:
let i =0;
while(i <3){// выводит 0, затем 1, затем 2
alert( i );
i++;
}
Если бы строки i++ не было, то цикл повторялся бы вечно. Хотя браузер не допустит этого: пользователь получит возможность прекратить эту команду, а JavaScript на стороне сервера убьет этот процесс.
А вы уже использовали инструкции break/continue, goto? Полезной ли оказалась наша статья? Напишите в комментариях.
А у вас есть еще какие-то статьи по циклам в php? Очень бы хотелось поподробней эту тему изучить.
Добрый день, Лилия. Следите, пожалуйста, за нашими новыми статьями. Мы в ближайшее время опубликуем по ним дополнительные статьи.