# Инструкция continue в PHP

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

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

Вот решение описанной задачи:

`<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; foreach ($arr as $elem) { if ($elem % 2 === 0) { $res = $elem * $elem; echo $res; } elseif ($elem % 3 === 0) { $res = $elem * $elem * $elem; echo $res; } } ?>`

Как вы видите, строчка `echo $res` повторяется два раза. Давайте вынесем ее за `if`, вот так:

`<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; foreach ($arr as $elem) { if ($elem % 2 === 0) { $res = $elem * $elem; } elseif ($elem % 3 === 0) { $res = $elem * $elem * $elem; } echo $res; // вынесли вывод за условие } ?>`

Теперь наш скрипт, однако, работает немного не так: получится, что и для обычных элементов, не обработанных через наш `if`, будет выполнятся вывод переменной `$res` на экран, что по условию нашей задачи нам не нужно.

Поправим проблему, добавив к нашему `if` еще условие `else`, которое будет срабатывать для элементов, не делящихся на `2` и `3`, и вызовем там инструкцию `continue`, которая сразу же будет перебрасывать нас на новую итерацию цикла:

`<?php $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; foreach ($arr as $elem) { if ($elem % 2 === 0) { $res = $elem * $elem; } elseif ($elem % 3 === 0) { $res = $elem * $elem * $elem; } else { continue; // перейдем на новую итерацию цикла } echo $res; // выполнится, если делится на 2 или 3 } ?>`
← →
↑