Циклы while, do while, foreach и for
Цикл — это конструкция предназначенная для цикличного выполнения команд в теле цикла, включающая проверку нужно ли это делать(истинность логического выражения). Циклы чаще всего используются для вывода статей, новостей, комментариев и т.д.
Цикл с предусловием while
Цикл while выполняет один и тот же участок кода, пока соблюдается некоторое условие. Если условие ложно, то конструкция прекращает свою работу, иначе выполняет очередную итерацию и начинает все с начала. Синтаксис цикла выглядит так:
1 2 3 4 |
while (условие) { тело цикла; } |
Где, условие — логическое выражение, а инструкция — инструкция тела цикла. В теле цикла постоянно должны производиться какие-то действия, которые будут изменять значения условия, иначе цикл «зациклиться». Если выражение с самого начала ложно, то цикл не выполнится ни разу.
Цикл while имеет альтернативный синтаксис:
1 2 3 |
while (условие): тело цикла; endwhile; |
Цикл с постусловием do while
В отличие от предыдущего цикла, данный цикл проверяет истинность условия не до,а после каждого подхода. Благодаря этому тело цикла выполняется хотябы один раз.Синтаксис цикла:
1 2 3 4 5 |
do { тело цикла; } while (условие); |
После очередной итерации проверяется, истинно ли условие, и, если это так, управление передается вновь на начало цикла, в противном случае цикл заканчивает работу.
Цикл for
Цикл for используется для выполнения выражений определенное число раз. Его часто называют циклом со счетчиком. Синтаксис цикла:
1 2 3 4 |
for (инициализирующие команды; условие; команды после прохода) { тело цикла; } |
Суть работы цикла такова:
- Инициализирующие команды — присваивают переменной-счетчику начальное значение;
- Условие — содержит логическое выражение. Пока логическое выражение возвращает значение true, выполняются выражения внутри цикла;
- Команды после прохода задают изменение переменной-счетчика при каждой итерации.
Последовательность работы цикла for:
- Инициализирующим переменным присваивается начальное значение.
- Проверяется условие. Если оно истинно, выполняются выражения внутри цикла, а в противном случае выполнение цикла завершается.
- Переменная-счетчик изменяется на указанную величину.
- Переход к п. 2. Цикл выполняется до тех пор, пока условие не вернет false.
Пример использования цикла:
1 2 3 4 |
for ($a = 0; $a <= 10; $a++) { echo "Цикл номер $a<br>"; } |
Для данного цикла существует альтернативный синтаксис:
1 2 3 |
for(инициализирующие команды; условие; команды после прохода): тело цикла; endfor; |
Цикл foreach
Цикл foreach используется для перебора элементов массивов. Синтаксис цикла выглядит следующим образом:
1 2 |
foreach(массив as $ключ => $значение) тело цикла; |
Рассмотрим следующий пример:
1 2 3 4 5 |
$men = array( "Oleg", "Dmitry", "Sergey", "Ivan" ); foreach ( $men as $name ) { echo $name . "<br />"; } |
Где $name переменная по которой мы будем обращаться к элементам массива. Теперь цикл foreach пройдет по всему массиву $men и выведет каждый элемент этого массива на экран.
Также использовав цикл foreach можно получить ключи всех элементов массива.
1 2 3 4 5 6 7 8 |
$men[1] = 'Oleg'; $men[2] = 'Dmitry'; $men[3] = 'Sergey'; $men[4] = 'Ivan'; foreach ( $men as $key => $name ) { echo $name; echo $key; } ?> |
Теперь мы увидим и элементы и их ключи. Вместо $name и $key можно использовать любые другие названия, имена этих переменных задаются произвольно.
Инструкции break и continue
Инструкция break осуществляет немедленный выход их цикла. Она может задаваться с одним необязательным параметром — числом которое указывает, из какого вложенного цикла должен быть произведен выход. По умолчанию используется 1(то есть выход из текущего цикла). Рассмотрим следующий пример:
1 2 3 4 |
for ($i=1; ; $i++) { if ($i>100) break; echo $i . "<br>\n"; } |
В данном примере мы оставили условие цикла пустым, и значит, что цикл будет продолжаться бесконечно. Однако использование оператора break прерывает его выполнение, как только 100 строк уже напечатано.
Обратите внимание, оператор break прерывает выполнение цикла, а не программы, то есть далее будет выполнено выражение, следующее сразу за циклом.
Инструкцию break удобно использовать для циклов-поисков: как только очередная итерация удовлетворяет условию, цикл заканчивается.
Оператор continue позволяет перейти к следующей итерации, пропустив текущую. Например, выведем все числа от 1 до 10, кроме чисел от 5 до 8 включительно:
1 2 3 4 |
for ($i=1; $i<10; $i++) { if ($i>4 && $i<9) continue; echo $i . "<br>\n"; } |
В результате видим, что числа от 5 до 8 не вывелись, при этом цикл продолжал работу и показал нам все числа до 5 и после 8.