Урок 12. PHP — Цикл While
Выполнение однообразных операций всегда напрягает нас в реальной жизни. Например, запечатать 50 конвертов с письмами (согласен, неудачный пример, но суть ясна). А вот в программировании есть такие хорошие конструкции, которые позволяют упросить выполнение повторяющихся операций. Одним из решений будут функции php, которые мы рассмотрели в одном из прошлых уроков. Но также существует и еще несколько вещей, которые позволят упростить нам жизнь — циклы.
Идея цикла заключается в том, чтобы делать что-то снова и снова, пока задача не будет завершена или пока не выполнится определенное условие (заданное). Перед тем, как показать реальный пример где может понадобиться такая конструкция, давайте рассмотрим структуру PHP цикла.
Простой пример цикла While
Суть вайла проста. Он будет выполнять заданный набор команд снова и снова, пока выполняется прописанное условие. Так называемый цикл с предусловием, то есть сначала проверка, потом выполнение. Эта логическая проверка работает так же, как та, которую мы рассматривали в уроке про IF…else в php.
Простой пример while цикла представлен ниже:
while ( условие ){ //тело цикла; }
Этот код показывает, как построен цикл. Примерный алгоритм выполнения выглядит следующим образом:
- Шаг 1. Проверяется заданное условие цикла. Если оно истинно, то выполняется Шаг 2, если ложно, то Шаг 4.
- Шаг 2. Выполнение тела цикла (заданных команд).
- Шаг 3. Процесс начинается снова (Шаг 1).
- Шаг 4. Если условное выражение ложно, то код внутри цикла не выполняется. Код, записанный после цикла выполняется как обычно.
Рабочий пример While в php
Например, выведем числа от 1 до 10:
$i = 1; while ($i <= 10) { echo $i; $i++; }
Присваиваем переменной $i значение 1, а затем формируем цикл с условием ($i <= 10). Таким образом команда echo $i выполнится 10 раз. Итератор (переменную - счетчик) нужно изменять самостоятельно, в отличие от цикла for, но о нем мы поговорим позже. Для этого мы выполняем команду $i++. Если этого не сделать, то цикл никогда не прервется, то есть код зациклится, чего не хотелось бы. Вот и все, на самом деле это очень просто, но и очень полезно. Без циклов не реализовать никакой мало-мальски полезной задачи.
← Массивы | Содержание | Цикл For →
Комментарии:
Cпс большое за уроки… все усвоил закоментил… Когда будет продолжение?
Артур, день добрый! Да, что-то я отстал от графика, обещаю исправиться. Сегодня сделаю еще 1-2 урока, следите за новостями! :)
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
этот код лучше бы было оптимизировать, так как уже рассмотрели инкремент можно было бы записать более компактно
$i = 1;
while ($i <= 10) {
echo $i++;
}
i увеличивается послу его вывода, точно также как и в оригинал
но предложений вариант будет более компактным
Отлично, так действительно компактнее, спасибо ;)
Тупой вопрос может но все же спрошу )) $i <= 10. Почему пишем меньше или ровно 10. Если вот написать == Тогда не работает цикл. Почему? ) извините дурачка за тупые вопросы )
Дак ведь вначале присваиваем $i = 1, следовательно если в цикле написать условие что i==10 оно никогда не выполнится вот и цикл не сработает :)
myblaze, понятно. Спасибо. Реально крутой сайт для начала изучения пхп. Респект!
myblaze, но вот немного уточнить хочу: мы же прописываем условие <= 10 т. е меньше или равно 10. А если мне нужно ровно 10?
Darius если нужно ровно 10, то можно ведь обычным условием if проверить ;)
Вот такой код встретил в wordpress:
while ( have_posts() ) : the_post();
Какое назначение «:» если это цикл PHP?
Спасибо, с двоеточием понятно.
Возник аналогичный вопрос с «Darius» ! Почему счетчик от 1 до 10? Ведь прописываем Меньше или равно??? ПО логике ведь должны были прописать больше или равно?
Алик , Дариус’у ответели попробуй через условие if
как заставить opfhf,nfm else если условие в if false
<?php
$i = 0;
while (have_rows('block_2_2')) : the_row();
if ($i <=4) {
var_dump($i);
echo '
‘ . get_sub_field(‘block_2_2_1’) . ‘
‘ . get_sub_field(‘block_2_2_2’) . ‘
‘ . get_sub_field(‘block_2_2_4’) . ‘
‘ . get_sub_field(‘block_2_2_3’) . ‘
‘;
} else {
// var_dump ($i);
echo ‘
‘ . get_sub_field(‘block_2_2_1’) . ‘
‘ . get_sub_field(‘block_2_2_2’) . ‘
‘ . get_sub_field(‘block_2_2_4’) . ‘
‘ . get_sub_field(‘block_2_2_3’) . ‘
‘;
}
$i++;
endwhile;
?>
щас выполняеться в цикле и то и то
Все понятно. Спасибо