01.10.2017   801
Цикл 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 10: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 11: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 21: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 15:24:38
0

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

Ответить
 WarLikeLaux 2017-11-10 17:44:38
0

https://pp.userapi.com/c824504/v824504838/1c106/WB8KDf9xzn0.jpg

Ответить
  •  ivashkevich 2017-11-10 17:49:57
    0

    Всё хорошо, но код лучше оформлять текстом, как я вам и говорил. С помощью markdown-разметки:
    ```
    код
    ```

    Закрывающий тег ?> в конце не нужен.

    Ответить
 serb2017 2017-11-15 12:24:07
+1

<?php

$i = 346;
$i1 = 357;

if ($i % 2 !== 0) {$i=$i+1;}

while ($i <= $i1) {
    $array1 [] = $i;
    $i = $i + 2;
    }

foreach ($array1 as $i) {
    echo $i;
    echo '<br>';
};

Ответить
  •  ivashkevich 2017-11-18 13:49:15
    0

    У вас всё хорошо и с логикой и с алгоритмами. Есть только небольшая проблема со стилем кода и названиями переменных. То что находится внутри фигурных скобок нужно выносить на отдельные строки. Вот так:

    if (условие) {
        действие
    }

    Переменную $i лучше назвать $from. $i1 лучше назвать $to.
    При добавлении новых элементов в массив в конструкции между именем массива и квадратными скобками не должно быть пробелов. Вот так:

    $arr[] = 123;

    Позже напишу отдельную статью по этой теме. И еще раз - с задачей вы справились на все 100%. Кодстайл - это уже профессиональный уровень, но будет хорошо если вы уже сейчас начнете писать следуя этим правилам. Это даст вам преимущество.

    Ответить
 serb2017 2017-11-18 15:18:22
0

Благодарю Вас за совет. Действительно, нужно быть внимательным к "мелочам", особенно в жизни !

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


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