01.10.2017   475
Цикл while в PHP: урок с примерами

While: самый простой цикл в PHP

В этом уроке мы поговорим о ещё одном цикле в PHP – цикле while. Этот цикл является самым простым из всех. Его структура выглядит следующим образом:

<?php

while (условие) {
    какие-то действия;
}

Если результат выражения в круглых скобках – true, будут выполнены действия в фигурных скобках. После этого снова будет произведена проверка выражения на истинность. Цикл будет прекращен, когда результат выражения окажется равным false. While в переводе с английского означает «до тех пор пока». Так и получается, цикл будет выполняться до тех пор, пока условие выполняется. Давайте рассмотрим несколько простых примеров, когда цикл while будет нам полезен.

Задача #1 – вывести числа от 0 до 10

Решение с использованием цикла while:

<?php

$i = 0;

while ($i <= 10) {
    echo $i++;
    echo '<br>';
}

Сначала определили переменную $i = 0. Затем в условии цикла while говорим, что нужно выполнять его, пока $i меньше либо равно 10. На каждой итерации мы выводим переменную $i и после вывода увеличиваем её на единицу. Выводим тег переноса строки и снова переходим к условию. И так до тех пор, пока $i не станет равной 11. В этот момент условие не выполнится и цикл завершится.

Задача #2 – вывести степени числа 2, меньшие 100000

Решение:

<?php

$i = 2;

while ($i < 100000) {
    echo $i;
    $i *= 2;
    echo '<br>';
}

Результат:

2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536

Пояснять не буду, всё довольно просто.

За новыми уроками следите в наших группах в социальных сетях, ссылки на них вы найдёте в шапке сайта. Если этот урок был вам полезен, расскажите об этом курсе своим знакомым или поделитесь на него ссылкой в социальных сетях. Также, если вы хотите помочь проекту материально – вы можете стать патроном проекта – это самые преданные и благодарные читатели, которые вносят неоценимый вклад в развитие проекта. А данный урок вышел при поддержке патрона Евгения Акопяна. Спасибо!

Домашнее задание
Для просмотра домашки нужно войти на сайт.
Или получить доступ прямо сейчас:


Нажимая эту кнопку
Вы принимаете политику конфиденциальности

Комментарии

 SBTesla 2017-10-01 07:28:49
0

<?php

$num = 344;
while ($num <= 357) {
    if ($num % 2 == 0) {
        $arr[] = $num;
    }
    $num++;
}

foreach ($arr as $key => $value) {
    echo $value;
    echo "<br>";
}
<?php
/*Выводим все сотые  числа*/
$num = 0;
while ($num < 1000) {
    if ($num) {
        $arr[] = $num;
    }
    $num+= 100;
}

foreach ($arr as $key => $value) {
    echo $value;
    echo "<br>";
}

Ответить
  •  ivashkevich 2017-10-01 08:00:03
    0

    1. Если входные условия поменяются, и нужно будет найти все чётные числа от 344, то число 344 будет пропущено, а проверяться сразу будет 345. Аналогично с верхней границей, если было бы 358, то оно тоже было бы пропущено. Переделайте алгоритм так, чтобы граничные значения тоже учитывались.
    2. Так неправильно:
      if ($i % 2) { } 
      else { $arr[] = $i;}

      Правильно вот так:

      if ($i % 2 === 0) {
          $arr[] = $i;
      }

      Во-первых, ни в коем случае не должно быть пустых блоков. Можно инвертировать условия с помощью логического НЕ (оператор !). То есть не писать:

      if ($x) {
          //это мне ни к чему
      } else {
          //а вот здесь я что-то сделаю
      }

      А писать:

      if (!$x) {
          //здесь я что-то сделаю
      }

      Здесь вы посмотрели, что если $i делится на 2 с остатком (остаток - 1, будет преобразовано в true), то это не то что вам нужно. И добавили else и его уже обработали.
      Хотя можно было сделать просто подходящее условие - если остаток от деления на 2 равен 0.

    3. Блоки if всегда нужно писать в виде:
      if (условие) {
          //то
      }

      Никаких в одну строку и прочих лишних переносов.

    4. Один отступ всегда должен быть равен четырем пробелам. А у вас echo пляшут как хотят. Используйте автоформатирование в PHPStorm - одновременное нажатие CTRL+ALT+L

    Поправьте эти небольшие недочёты и попробуйте снова.

    Ответить
 trialex3 2017-10-02 18:20:07
+1

<?php
$arr = [];
$x = 345;
while ($x <= 357) {
    if ($x % 2 == 0) {
        $arr[] = $x;
    }
    $x++;
}

foreach ($arr as $value) {
    echo $value . ', ';
}
?>

Ответить
 Watcher 2017-10-08 12:24:38
0

$arr = [];
можно опустить
тоже работает )))

Ответить
Чтобы написать комментарий нужно войти на сайт.
Или получить доступ прямо сейчас:


Нажимая эту кнопку
Вы принимаете политику конфиденциальности