Урок 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

Комментарии:

  1. Артур — 23.10.2012 13:28

    Cпс большое за уроки… все усвоил закоментил… Когда будет продолжение?

  2. myblaze 23.10.2012 18:00

    Артур, день добрый! Да, что-то я отстал от графика, обещаю исправиться. Сегодня сделаю еще 1-2 урока, следите за новостями! :)

  3. stasupml — 16.11.2012 14:56

    $i = 1;
    while ($i <= 10) {
    echo $i;
    $i++;
    }
    этот код лучше бы было оптимизировать, так как уже рассмотрели инкремент можно было бы записать более компактно
    $i = 1;
    while ($i <= 10) {
    echo $i++;
    }
    i увеличивается послу его вывода, точно также как и в оригинал
    но предложений вариант будет более компактным

  4. myblaze 16.11.2012 17:44

    Отлично, так действительно компактнее, спасибо ;)

  5. Darius — 23.03.2013 15:02

    Тупой вопрос может но все же спрошу )) $i <= 10. Почему пишем меньше или ровно 10. Если вот написать == Тогда не работает цикл. Почему? ) извините дурачка за тупые вопросы )

  6. myblaze 23.03.2013 17:50

    Дак ведь вначале присваиваем $i = 1, следовательно если в цикле написать условие что i==10 оно никогда не выполнится вот и цикл не сработает :)

  7. Darius — 23.03.2013 17:54

    myblaze, понятно. Спасибо. Реально крутой сайт для начала изучения пхп. Респект!

  8. Darius — 23.03.2013 17:57

    myblaze, но вот немного уточнить хочу: мы же прописываем условие <= 10 т. е меньше или равно 10. А если мне нужно ровно 10?

  9. myblaze 23.03.2013 19:45

    Darius если нужно ровно 10, то можно ведь обычным условием if проверить ;)

  10. andrew — 04.06.2014 14:53

    Вот такой код встретил в wordpress:
    while ( have_posts() ) : the_post();
    Какое назначение «:» если это цикл PHP?

  11. andrew — 04.06.2014 15:04

    Спасибо, с двоеточием понятно.

  12. Алик — 03.08.2014 14:00

    Возник аналогичный вопрос с «Darius» ! Почему счетчик от 1 до 10? Ведь прописываем Меньше или равно??? ПО логике ведь должны были прописать больше или равно?

  13. BPV — 02.11.2015 01:53

    Алик , Дариус’у ответели попробуй через условие if

  14. Эдик — 27.02.2017 01:54

    как заставить 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;
    ?>

    щас выполняеться в цикле и то и то

  15. Михаил — 06.08.2017 17:27

    Все понятно. Спасибо

Добавить комментарий