Вы находитесь на странице: 1из 3

Лекции курса PHP7 + MySQL с нуля

(краткое содержание)

ЛЕКЦИЯ 16. ИНСТРУКЦИИ BREAK И CONTINUE

Инструкция break
Часто бывает так, что в процессе выполнения цикла нет смысла проходить его
полностью и в какой-то момент, при выполнении определенных условий, прервать
его. Для таких целей существует инструкция break(), прерывающая выполнение
циклических конструкций.
Внутри инструкции имеется числовой параметр, который по умолчанию
выставлен на 1: break(1), что означает прерывание цикла, в который вложена
инструкция. Но, порой используются целые комплексы вложенных циклов:
for(a) {
for(b) {
for(c) {
инструкции_цикла;
break();
}
}
}
В таких ситуациях инструкция break выйдет только из цикла for(c), но не из
всего комплекса. Таким образом, число в скобках задает количество циклов или
вышестоящих функций, из которых необходимо выйти при выполнении условия,
стоящего перед break.
Рассмотрим действие инструкции break() на примере листинга 16.1.
Листинг 16.1. Пример действия инструкции break().

//Создаем двумерный массив, состоящий из случайных чисел в диапазоне от 0 до 10


//Открываем первый цикл, ограничивающий количество элементов основного
массива 10 элементами
for($i = 0; $i <= 10; $i++){
//Открываем вложенный цикл, ограничивающий каждый вложенный массив 5
элементами
for($j = 0; $j <= 5; $j++){
//При помощи функции mt_rand() заполняем каждый элемент массива
случайным числом от 0 до 10
$array[$i][$j] = mt_rand(0, 10);
}
}

//Открываем новый цикл, где условием выхода из цикла будет достижение счетчиком
$i максимальной длины массива при помощи стандартной функции count(), считающей
количество элементов в массиве
for($i = 0; $i < count($array); $i++){
//Аналогично первому циклу, создаем цикл для прохождения вложенных
массивов
for($j = 0; $j < count($array[$i]); $j++){
//Ставим условие, если элемент массива равен 0, то выходим из всех
циклов
if($array[$i][$j] == 0) break(2);

1
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)

}
}

//Создаем условие, при котором итератор $i основного цикла не достиг конца


основного массива. При выполнении условия выводим на экран сообщение о найденном
элементе равном нулю и его местоположение в массиве.
if($i < count($array))
echo "Найден нулевой элемент в матрице: [$i][$j]!!!";

В данном примере рассмотрены две функции, которые не встречались в курсе


ранее – mt_rand() и count(). Кроме того, здесь мы работали с двумерным массивом,
теория о которых будет рассмотрена в следующих уроках, но в кратком изложении
они представляют собой следующее:
1. Двумерный массив – это массив, состоящий из основного массива и
вложенных в него массивов. Двумерный массив можно представить в виде таблицы
элементов, где индексы основного массива находится в заголовке столбца, а
вложенных массивов – в заголовках строк.
0 1 2
Элемент с индексом Элемент с индексом Элемент с индексом
0
[0][0] [1][0] [2][0]
Элемент с индексом Элемент с индексом Элемент с индексом
1
[0][1] [1][1] [2][1]
Элемент с индексом Элемент с индексом Элемент с индексом
2
[0][2] [1][2] [2][2]
Элемент с индексом Элемент с индексом Элемент с индексом
3
[0][3] [1][3] [2][3]
Отдельно стоит отметить, что в PHP, как и в других языках программирования,
индексы массивов начинаются не с 1, а с 0!
Таким образом, при поиске в многомерном массиве (в т. ч. и двумерном), Вы
создаете несколько вложенных циклов в количестве измерений массива – для 2-
мерного соответственно 2 цикла, для 3-мерного – 3 и т. д.
2. Функция mt_rand() – одна из функций PHP, появившихся в поздних версиях,
которая генерирует случайные числа в заданном диапазоне. Диапазон задается
через запятую, где первый параметр – начальное число диапазона, второй
параметр – конечное число диапазона.
3. Функция count() позволяет определять максимальную длину массива, для
которого она запускается. При использовании необходимо помнить, что длина
массива и его индексация имеют смещение на 1. Так, для 10-го по счету элемента
массива, его индекс будет равным 9, т. к. нумерация элементов в массиве
начинается с 0. Именно поэтому в циклах стоит знак <, а не <=.
Таким образом, рассмотрев подробно листинг 21.1., Вы увидите, что при
переборе каждого элемента двумерного массива происходит проверка на
равенство нулю. В случае, если такой элемент найден, происходит выход из всех
циклов и программа переходит к выполнению следующей инструкции – условного
оператора if.
При разных запусках программы результат может отличаться, т. к. при каждом
запуске происходит новое заполнение двумерного массива

2
Лекции курса PHP7 + MySQL с нуля
(краткое содержание)

Инструкция continue
Аналогично инструкции break, инструкция continue работает внутри циклов. В
отличие от инструкции break, инструкция continue дает команду на продолжение
выполнения инструкций внутри цикла и позволяет существенно улучшить
читаемость кода. Также, как и break, имеет вложенный параметр, обозначающий
переход к нужному циклу.
Рассмотрим условный пример, когда есть двумерный массив со случайными
числами от 10 до 40. При этом необходимо выполнить условие – если элемент
массива с вложенным индексом [][2] больше 25, то необходимо прекратить проход
по циклу, но если элемент массива с таким индексом меньше 25, то перейти к
следующей итерации.
Листинг 16.2. Пример взаимодействия инструкций continue и break

//Аналогично способу из листинга 21.1., создаем двумерный массив и заполняем его


случайными элементами, но уже в диапазоне от 10 до 40
for($i = 0; $i <= 10; $i++){
//Открываем вложенный цикл, ограничивающий каждый вложенный массив 5
элементами
for($j = 0; $j <= 5; $j++){
//При помощи функции mt_rand() заполняем каждый элемент массива
случайным числом от 0 до 10
$array[$i][$j] = mt_rand(10, 40);
}
}

//Открываем первый цикл для прохода по основному массиву


for($i = 0; $i < count($array); $i++){
//Задаем условие проверки для continue и break
if($array[$i][2] <= 25) continue;
else break;
}

//Выводим на экран найденный элемент


if($i < count($array))
echo "Искомый элемент в матрице = ".$array[$i][2]." и занимает позицию[$i][2]";

Аналогично листингу 16.1. при каждом запуске результат может различаться.


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