Найти в Дзене
Блог Web-Dev

Циклы PHP

Циклы PHP-это конструкции языка для многократного повторения действий. Они упрощают работу с кодами укорачивая их и избавляют нас от серьёзной рутины. И сегодня мы подробно изучим работу с этими циклами. Цикл for с счетчиком For имеет сложную конструкцию и параметров у него больше чем у других циклов, но при этом обладает более широкими возможностями. Данный цикл выполняется с помощью счетчика заданное количество раз. Это количество устанавливается заранее перед началом итерации (круги, одна итерация — один круг). for(инициализация_переменных_для_нашего_цикла; наше_условие; прибавление_или_уменьшение_счетчика){
Выполняемый код после каждой итерации (круга), если условие верно (true)
} Здесь первым параметром идет инициализация переменных счетчиков и длины цикла. Хотя их можно прописать и перед for, а внутри скобок поставить только точку с запятой. Далее вторым аргументом указывается условие с длиной итерации. Затем третьим параметром мы изменяем счетчик после каждого круга (итерации).
Оглавление

Циклы PHP-это конструкции языка для многократного повторения действий. Они упрощают работу с кодами укорачивая их и избавляют нас от серьёзной рутины. И сегодня мы подробно изучим работу с этими циклами.

Цикл for с счетчиком

For имеет сложную конструкцию и параметров у него больше чем у других циклов, но при этом обладает более широкими возможностями. Данный цикл выполняется с помощью счетчика заданное количество раз. Это количество устанавливается заранее перед началом итерации (круги, одна итерация — один круг).

for(инициализация_переменных_для_нашего_цикла; наше_условие; прибавление_или_уменьшение_счетчика){
Выполняемый код после каждой итерации (круга), если условие верно (true)
}

Здесь первым параметром идет инициализация переменных счетчиков и длины цикла. Хотя их можно прописать и перед for, а внутри скобок поставить только точку с запятой. Далее вторым аргументом указывается условие с длиной итерации. Затем третьим параметром мы изменяем счетчик после каждого круга (итерации). По сути третий параметр заставляет цикл работать (двигаться дальше).

Как вы поняли, цикл представляет собой движение по кругу. И этим движениям можно задавать количество, посмотрите следующий пример:

<?php
for($c = 0; $c < 14; $c++){
//Выполняемый код после каждого круга
echo "Наши данные — $c;<br>";
}
?>

Как видите через цикл мы вывели наши данные. В скобках сначала присвоили счетчику «$c» нулевое значение, потом указали условие с длиной итераций «$c < 14». А в конце запустили наш цикл прибавляя счетчик «$c++» на одну единицу.

Другой пример:

<?php
$arr_color=["Красный","Желтый","Оранжевый","Фиолетовый","Перламутровый"];
for($c = 0, $length=count($arr_color); $c < $length; $c++){
//Выполняемый код после каждого круга
echo "Наш цвет — $c — ".$arr_color[$c].";<br>";
}
?>

Для определения длины массива в вышеописанном примере была использована функция «count». Если работаете с длинными массивами, то эту функцию с массивом лучше заранее вложить в переменную и уже ее вставить в условие цикла, как в нашем примере. Это необходимо для быстродействия выполнения кода. Иначе при каждой итерации в условии будет вызываться функция «count» и тормозить работу кода.

Цикл foreach для перебора массивов

Для работы с массивами и объектами используется цикл foreach.

foreach(массив_или_объект as ключ => значение) {
выполняемый_блок_кода
}

С его помощью довольно просто перебирать массивы:

<?php
$array_auto=["Audi","Cadillac","Ford","Jeep"];
echo "Мои любимые марки машин: ";
foreach($array_auto as $key => $marka_auto) {
echo $key." — ".$marka_auto."; ";
}
?>

В данном примере через цикл провели массив «$array_auto» и каждый его ключ со значением используя оператор «as» вложили в переменные «$key» (ключ), «$marka_auto» (значение). Здесь можно было обойтись и без ключа с оператором «=>».

Цикл while с предусловием

У while очень простой синтаксис.

while (наше_предусловие){
исполняемый код, если условие верно (true)
}

Сначала проверяется условие и итерация будет идти пока условие (предусловие) истинно. Если условие изначально ложно (false), то никакой код не будет выполнен.

В следующем примере проверяется условие «$c < $length». Если «true», то выводим значение через «echo» и увеличиваем счетчик «$c++».

<?php
$array_auto=["Citroen","Lexus","Fiat","Nissan","Opel","Skoda"];
$c=0;
$length=count($array_auto);
//проверяем условие
while($c < $length){
//исполняемый код, если условие верно (true)
echo $array_auto[$c]."<br>";
$c++; //увеличиваем счетчик
}
?>

Цикл do while с постусловием

Главное отличие цикла «do while» от «while» состоит в том, что блок кода выполняется перед условием (постусловие). То есть данный цикл в любом случае выполнит хотя бы один блок кода, а уже потом проверит условие.

do{
блок кода для выполнения;
}
while (наше_постусловие);

<?php
$array_auto=["Audi","Lexus","Cadillac","Nissan","Jeep","Skoda"];
$c=0;
$length=count($array_auto);
do{
//исполняемый код
echo $array_auto[$c]."<br>";
$c++; //увеличиваем счетчик
}while($c < $length); //если условие верно (true) пойдет на следующую итерацию
?>

Здесь сначала выполняется код и только после этого проверяется условие. Если верно пойдет на очередную итерацию, а если ложь, тогда цикл завершится.

Операторы break и continue

Порой возникает необходимость что-то изменить в цикле, например, остановить его в нужном месте или пропустить некоторые значения при определенном условии. Для этого нам помогут соответствующие операторы:

  • continue — убирает отдельные значения;
<?php
$array_auto=["Jaguar","Audi","Lexus","Cadillac","Nissan","Ford","Jeep"];
print_r($array_auto);
echo "<br>Здесь с «continue» убираются некоторые элементы массива: ";
foreach($array_auto as $key => $marka_auto) {
if($marka_auto == "Audi" || $key == 4){continue;}
echo $key." — ".$marka_auto."; ";
}
?>

В этом примере прописано условие «if($marka_auto == "Audi" — по равенству значений || $key == 4 — по равенству ключей)», которое убирает с оператором «continue» конкретные значения. Как только значение массива проходило условие на равенство, оператор «continue» срабатывал как фильтр (убирал это значение).

  • break — прерывает цикл в определенном месте.
<?php
$array_auto=["Jaguar","Audi","Lexus","Cadillac","Nissan","Ford","Jeep"];
print_r($array_auto);
echo "<br>Здесь с «break» ограничили вывод массива: ";
foreach($array_auto as $key => $marka_auto) {
echo $key." — ".$marka_auto."; ";
if($key == 3){break;}
}
?>

Здесь оператор break использовался для прерывания цикла, когда условие прошло на равенство ключей ($key == 3).

Пользовательский цикл

Вы можете создавать свои собственные пользовательские циклы, без использования встроенных цикловых конструкций. Для этого нам нужны пользовательские функции, с помощью которых мы сможем зациклить любой код:

<?php
$marki_auto="";
$array_auto=["Jaguar","Audi","Lexus","Cadillac","Nissan","Ford","Jeep"];
echo myCycle($array_auto,0,6);
function myCycle($array_auto,$c,$length){
global $marki_auto;
$marki_auto .= "Ключ — ".$c.", Значение — ".$array_auto[$c]."; <br>";
if($c < $length){
$c++;
myCycle($array_auto,$c,$length);
}
return $marki_auto;
}
?>

Тут мы создали функцию «myCycle» с тремя параметрами: массив, счетчик (ключ массива) и длина массива. При вызове нашей функции параметры массива и счетчика вставятся в локальные переменные «$array_auto[$c]» и будут присвоены глобальной переменной «$marki_auto». После этого пойдет проверка на условие, если счетчик меньше длины массива «$length» (третий параметр), то сработает код внутри фигурных скобок. То есть к счетчику прибавится единичка и снова вызовется наша функция, пойдя на новый круг с увеличенным счетчиком. И так раз за разом пока условие будет «true». Как только условие окажется «false» наш конечный результат «$marki_auto» через return вернется к первоначальному вызову с «echo».

Таким образом мы можем вывести любой массив. Это был лишь один из вариантов, такие пользовательские циклы можно по разному расписать и не только с массивами PHP.

Здесь я завершаю этот урок «Циклы PHP». Если возникли вопросы, то отправляйте в комментариях.