В этой части учебника рассмотрим циклы в PHP 7, вы научитесь выходить из него и делать бесконечные циклы.
Для начала разберём, для чего вообще нужны циклы, всё очень просто, в первую очередь они нужны для того чтобы не повторять код, вот и всё.
PHP циклы:
В PHP есть несколько циклов, а конкретно четыре, сейчас мы все их рассмотрим.
Цикл while:
Этот цикл пожалуй самый простой из всех, вот его синтаксис.
1 2 3 4 5 6 7 | $i = 0; // Создаём переменную и присваиваем ей ноль // Пишем цикл while while ($i < 10) { echo $i . ' '; // Выводим переменную $i $i++; // Увеличиваем переменную $i на один } |
Вот такой код получился, создаём переменную $i которую будим выводить на экран и увеличивать на один после каждой итерации цикла
(Итерация — один проход по циклу), после ключевого слова while в круглых скобках обязательно пишем условие при которых будет работать цикл, в нашем случае, пока $i не станет равен 10.
Вот что вывелось на экран.
Также, его можно записать в удобной форме для верстальщика.
1 2 3 4 5 6 7 | $i = 0; // Создаём переменную и присваиваем ей ноль // Пишем цикл while while ($i < 10) : echo $i . ' '; // Выводим переменную $i $i++; // Увеличиваем переменную $i на один endwhile |
Этот цикл достаточно популярен в PHP разработке, поэтому обязательно запомните его.
Благодаря этому циклу в PHP можно делать бесконечный цикл, что редко но бывает полезно, вот как он пишется.
1 2 3 4 5 6 7 | $i = 0; // Создаём переменную и присваиваем ей ноль // Пишем цикл while бесконечным while (true) { echo $i . ' '; // Выводим переменную $i $i++; // Увеличиваем переменную $i на один } |
Как видите, что бы сделать его бесконечным, достаточно только в условие цикла, написать true, вот что получилось.
Также ещё делают переменную, а в цикли условие, при каких обстоятельствах переменная будет меняться на false, и если она равно false, то цикл заканчивается, как это сделать будет ниже.
Цикл do while:
Этот цикл очень похож на предыдущий, единственное, обязательно хотя бы один раз произойдёт итерация, так как он проверяет условие после итерации, а не перед неё.
1 2 3 4 5 6 7 | $i = 0; // Создаём переменную и присваиваем ей ноль // Пишем цикл do while, в начале всегда пишем do do { echo $i . ' '; // Выводим переменную $i $i++; // Увеличиваем переменную $i на один } while ($i < 10); // Условие пишется в конце цикла |
Вид для верстальщиков у этого цикла нет, но и как показывает мой опыт, он редко используется, по крайне мере я его редко вижу, в основном вы будите использовать обычный while.
Цикл for:
Это наверное самый популярный цикл во многих языках программирования, но не в PHP, тем не менее, о нём рассказать надо.
1 2 3 4 | // Пишем цикл for for ($i = 0; $i < 10; $i++) { echo $i . ' '; // Выводим переменную $i } |
Давайте разберём его, в начале в круглых скобках пишется переменная, которую будем увеличивать на один, потом переменная увеличиваться на один, идёт проверка чему в итоге равна она.
И так пока переменная не будет равна десяти, конечно, вам не обязательно создавать переменную или увеличивать её, вы можете вообще это не писать.
Также вы можете использовать другие операции и условия, к примеру, $i можете присвоит один и уменьшать её на один, пока переменная не будет равна нулю.
Ещё у этого цикла есть вид для верстальщиков.
1 2 3 4 | // Пишем цикл for for ($i = 0; $i < 10; $i++) : echo $i . ' '; // Выводим переменную $i endfor; |
Этот цикл тоже не особо популярен.
Цикл foreach:
Этот цикл очень популярен, но он сделан для работы с массивами, поэтому, рекомендую сначала прочитать часть про массивы (Ссылка на часть), потом уже переходить к циклу foreach.
Цикл foreach в PHP его синтаксис достаточно простой, их целых два, различие лишь в том, что один вариант не берёт ключ значения массива, а второй берёт, рассмотрим их оба.
1 2 3 4 5 6 7 | // Объявление массива $arr $arr = array(1, 2, 3, 4); // Запуск цикла foreach foreach ($arr as $value) { echo $value . ' '; // Вывод значений массива на экран } |
Вот результат.
Как видите он вывел на экран значения массива, сначала в круглых скобках пишется сам массив, потом слово as и название переменной, оно может быть любое, эту переменную используем как обычную переменную внутри цикла, равна она одному значению массива, и при каждой итерации, оно меняется на следующее значение.
Также можем получить ключ каждого значение, делается это так.
1 2 3 4 5 6 7 | // Объявление массива $arr $arr = array(80, 12, 44, 15); // Запуск цикла foreach foreach ($arr as $key => $value) { echo $key . ' => ' . $value . '</br>'; // Вывод ключа и значений массива на экран } |
Вот результат.
Как видите, слева показывается индекс (ключ) значения, а справа само значение, точно также как и переменная, ключ это переменная.
Также у foreach есть вид специально для верстальшиков.
1 2 3 4 5 6 7 | // Объявление массива $arr $arr = array(80, 12, 44, 15); // Запуск цикла foreach для верстальшиков foreach ($arr as $key => $value) : echo $key . ' => ' . $value . '</br>'; // Вывод ключа и значений массива на экран endforeach |
Если вам было что то не понятно, то наверное вам надо сначала изучить массивы, а потом уже и цикл foreach.
PHP выйти из цикла:
Что бы в PHP выйти из цикла, есть два способа, первый, просто сделать переменную которая будет равна true, а в цикле условий и кода оно выполняется менять переменную на false.
1 2 3 4 5 6 7 8 9 10 11 12 | $i = 0; // Создаём переменную и присваиваем ей ноль $cycle_works = true; // Переменная, которая отвечает за работу в цикли // Пишем цикл while while ($cycle_works) { echo $i . ' '; // Выводим переменную $i $i++; // Увеличиваем переменную $i на один // Условие при котором надо менять значение переменной $cycle_work if ($i == 10) { $cycle_works = false; // меняем значение переменной } } |
Это очень простой способ, но на мой взгляд, это редко бывает полезно, но возможно кому то полезно.
Второй вариант, в том, что бы в PHP использовать break и continue, сейчас вы узнаете о них.
Continue:
Как же использовать в PHP в цикле while continue, всё очень просто.
1 2 3 4 5 6 7 8 9 10 | $i = 0; // Создаём переменную и присваиваем ей ноль while ($i < 5) { $i++; // Увеличиваем переменную на один // условие при котором должен выходить цикл if ($i == 2) { continue; // Выход из цикла } echo $i . ' '; // Отображение $i } |
Вот результат.
Как видите цифра два не вывелась, но почему же вывелись остальные, дела в том, что continue выходит из цикла перед циклом, при этом переменная $i не обнуляется.
То есть, то что идёт после continue не будет работать, при этом цикл снова пройдётся без изменений, надеюсь мне удалось понятно это объяснить.
break:
В PHP это почти тоже самое, что и continue, но выходит из цикла уже после него, то есть цикл больше не будет проходить, сейчас покажу это на примере while break.
1 2 3 4 5 6 7 8 9 10 | $i = 0; // Создаём переменную и присваиваем ей ноль while ($i < 5) { $i++; // Увеличиваем переменную на один // условие при котором должен выходить цикл if ($i == 2) { break; // Выход из цикла } echo $i . ' '; // Отображение $i } |
Результат этого кода.
Так получается, потому что, когда переменная $i, становится равна двум, то срабатывает break и выходит из цикла, после цикла, не успев вывести на экран.
Но на мой взгляд лучше делать правильные условия работы цикла, чем использовать break и continue.
Вывод:
Тут я разобрал как работают в PHP 7 циклы, разобрали циклы while, do while, for, и foreach, ещё рассмотрели break с continue.