Php прерывание цикла. Циклы в PHP. Цикл for без частей заголовка

  • 03.11.2019

Выполнение однообразных операций всегда напрягает нас в реальной жизни. Например, запечатать 50 конвертов с письмами (согласен, неудачный пример, но суть ясна). А вот в программировании есть такие хорошие конструкции, которые позволяют упросить выполнение повторяющихся операций. Одним из решений будут , которые мы рассмотрели в одном из прошлых уроков. Но также существует и еще несколько вещей, которые позволят упростить нам жизнь — циклы.

Идея цикла заключается в том, чтобы делать что-то снова и снова, пока задача не будет завершена или пока не выполнится определенное условие (заданное). Перед тем, как показать реальный пример где может понадобиться такая конструкция, давайте рассмотрим структуру PHP цикла.

Простой пример цикла While

Суть вайла проста. Он будет выполнять заданный набор команд снова и снова, пока выполняется прописанное условие. Так называемый цикл с предусловием, то есть сначала проверка, потом выполнение. Эта логическая проверка работает так же, как та, которую мы рассматривали в уроке про .
Простой пример while цикла представлен ниже:

While (условие){ //тело цикла; }

Этот код показывает, как построен цикл. Примерный алгоритм выполнения выглядит следующим образом:

  • Шаг 1. Проверяется заданное условие цикла. Если оно истинно, то выполняется Шаг 2, если ложно, то Шаг 4.
  • Шаг 2. Выполнение тела цикла (заданных команд).
  • Шаг 3. Процесс начинается снова (Шаг 1).
  • Шаг 4. Если условное выражение ложно, то код внутри цикла не выполняется. Код, записанный после цикла выполняется как обычно.

Вряд ли вы сможете написать серьезный сценарий на PHP , не используя циклы. Что такое цикл? Это особый вид управляющей конструкции, позволяющие многократно (и даже бесконечно) выполнять один и тот же код. В PHP поддерживаются следующие циклы:

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

Цикл for

Синтаксис цикла for следующий.

For(инициализация; условие; команды_после_итерации) { тело_цикла; }

В блоке инициализации всегда инициализируется счетчик, а также другие переменные (если необходимо). В блоке условия указывается в какой момент работа цикла должна быть прекращена. В блоке команд, исполняемых после каждого прохождения цикла, обычно меняется значение счетчика, а также и других переменных (если необходимо).

// Массив значений $array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); // Условие цикла звучит так: пока счетчик не достигнет значения, равного количеству // элементов массива, тело цикла выполняется for($i = 0; $i < count($array); $i++) { print "
".($i + 1).". ".$array[$i]."."; } /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Так как счетчик $i начинался с нуля, при каждой итерации мы к его значению прибавляли единицу, чтобы список выглядел более привычным. После каждой итерцации значение счетчика увеличивалось на единицу, и когда оно достигло 11, цикл остановился. Теперь давайте взглянем на цикл do-while.

Цикл do-while

Цикл do-while отличается тем, что он работает по постусловию. Это означает, что код, заключенный в теле цикла, выполнится как минимум один раз. Синтаксис цикла такой:

Do { тело_цикла; } while(условие);

Этот цикл используется довольно редко при веб-программировании , но может он вам и понадобится в ваших сценариях.

// Уже знакомый нам массив $array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); // Запускаем цикл $i = 1; do { print "
".$i.". ".$array[($i - 1)]."."; } while($i++ < count($array)); /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Обратите внимание на отличие того, что мы выводим на экран в этом цикле от цикла for . Так как код в теле цикла do-while исполняется как минимум один раз, начальное значение счетчика было задано нулевым. Как работает цикл… выполняется код, затем проверяется условие. При первой итерации счетчик имел значение 1. После итерации единица оказалась меньше 11 (количества элементов). При последней итерации счетчик имел значение 11, а это никак не меньше 11. Цикл остановился. На do-while очень похож цикл while.

Цикл while

Цикл while является предусловным. Он выполнится только тогда, когда его условие истинно. То есть цикл while может и не выполниться вовсе. Его ситаксис таков:

While(условие) { тело_цикла; }

Наряду с циклом for цикл while используется очень часто.

$array = array("Яблоко", "Картошка", "Арбуз", "Цветок", "Вода", "Ртуть", "Кислород", "Пшеница", "Россия", "Москва", "Ливень"); $i = 1; while($i++ <= count($array)) { print "
".$i.". ".$array[($i - 1)]."."; } /* Результат работы цикла будет таким: 1. Яблоко. 2. Картошка. 3. Арбуз. 4. Цветок. 5. Вода. 6. Ртуть. 7. Кислород. 8. Пшеница. 9. Россия. 10. Москва. 11. Ливень. */

Цикл while для начинающих разработчиков наиболее прост и понятен.

Цикл foreach

Цикл foreach не похож на все перечисленные. Он появился в PHP4, предназначен для перебора массивов. Разработчику не нужно ничего выдумывать для этого. Всё легко и просто:

/** * Цикл foreach следует понимать как «для каждого из». * Массив, обрабатываемый циклом, передается переменной, которая * доступна только внутри тела цикла. При желании можно обращаться * и к ключам массива. */ foreach(массив as элемент_массива) { тело_цикла; } foreach(массив as ключ_массива => элемент_массива) { тело_цикла; }

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

// Изменим уже знакомый нам массив. Сделаем его ассоциативным. $array = array("Яблоко" => "фрукт", "Картошка" => "овощь", "Арбуз" => "ягода", "Цветок" => "растение", "Вода" => "жидкость", "Ртуть" => "металл", "Кислород" => "газ", "Пшеница" => "хлеб", "Россия" => "наша Родина", "Москва" => "столица нашей Родины", "Ливень" => "попадос"); $i = 1; // Можем сделать так foreach($array as $v) { print "
".$i.". ".$v."."; $i++; } /* Получим такой вот неожиданный результат 1. фрукт. 2. овощь. 3. ягода. 4. растение. 5. жидкость. 6. металл. 7. газ. 8. хлеб. 9. наша Родина. 10. столица нашей Родины. 11. попадос. */ // А теперь сделаем иначе foreach($array as $k => $v) { print "
".$i.". ".$k." — это ".$v."."; $i++; } /* Теперь результат будет таким 1. Яблоко — это фрукт. 2. Картошка — это овощь. 3. Арбуз — это ягода. 4. Цветок — это растение. 5. Вода — это жидкость. 6. Ртуть — это металл. 7. Кислород — это газ. 8. Пшеница — это хлеб. 9. Россия — это наша Родина. 10. Москва — это столица нашей Родины. 11. Ливень — это попадос. */

Понимаете как работает этот цикл? Если нет, можете задать вопрос в комментариях к материалу.

В любом цикле можно использовать конструкции break или continue . Иногда не имеет смысл продолжать работу цикла или нужно перейти к следующей итерации.

$array = array("Яблоко" => "фрукт", "Картошка" => "овощь", "Арбуз" => "ягода", "Цветок" => "растение", "Вода" => "жидкость", "Ртуть" => "металл", "Кислород" => "газ", "Пшеница" => "хлеб", "Россия" => "наша Родина", "Москва" => "столица нашей Родины", "Ливень" => "попадос"); $i = 1; // Пример работы цикла с конструкцией continue foreach($array as $k => $v) { if($k != "Кислород") continue; print "
".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Кислород — это газ. */ $i = 1; // Пример работы цикла с конструкцией break foreach($array as $k => $v) { if($k == "Кислород") break; print "
".$i.". ".$k." — это ".$v."."; $i++; } /* Результат будет таким 1. Яблоко — это фрукт. 2. Картошка — это овощь. 3. Арбуз — это ягода. 4. Цветок — это растение. 5. Вода — это жидкость. 6. Ртуть — это металл. */

5.9K

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

Оператор цикла for в PHP

Цикл for в PHP выполняет блок кода определенное количество раз на основе счетчика. При этом количество раз, которое блок кода должен быть выполнен, определяется предварительно до входа в тело цикла.

for является одним из самых сложных видов цикла. В PHP цикл for ведет себя аналогично C . Ниже приведена структура синтаксиса:

for(expression1;expression2;expression3) statement;

В приведенном выше описании ключевое слово for указывает на цикл. В скобках определяются выражения, а затем инструкция, которую необходимо выполнить.

Как работает цикл for в PHP?

Чтобы понять, как работает цикл for , нам нужно понять эти три выражения. Выражение: expresison1 является первым, которое выполняется только один раз перед входом в цикл. Оно выполняется безоговорочно. Это значит, что первый раз перед входом в цикл выражение будет выполнено.

Expresison1 называется инициализирующим выражением, поскольку оно используется для инициализации счетчика, который используется в выражениях expression2 и expression3 .

Expression2 (проверка условия ) проверяется для того, чтобы определить разрешает ли условие выполнить инструкцию или нет. Первый раз оно запускается после expression1 , затем — перед входом в цикл.

Обычно expression2 содержит условный оператор, чтобы проверить, возвращает ли условие true или false . Если условие вернет true , тогда будет выполняться оператор, написанный в цикле.

Expression3 выполняется в конце каждой итерации после оператора цикла. Обычно программисты называют его выражением инкремента. Оно используют это выражение для увеличения значения счетчика, который был инициализирован в expression1 и проанализирован в expression2 .

Все три выражения не являются обязательными. Также можно создать PHP цикл, как показано ниже:

for(;;) statement;

for(;expression2;expression3) statement;

Если у нас несколько строк в цикле for , используйте фигурные скобки, как показано ниже:

for(expression1;expression2;expression3){ statement1; statement2; statement3; }

Блок-схема цикла for

На первом шаге выполняется выражение expression1 . Если вы внимательно посмотрите блок-схему, то обнаружите, что для expression1 не существует условия. Выражение expression1 похоже на поток выполняемой программы.

На следующем шаге сразу после выражения expression1 выполняется expression2 . Оно проверяет, выполняется ли условие цикла. Если условие истинно, то дальше будет выполняться цикл, иначе поток выйдет из цикла.

Если expression2 вернет true , то на третьем шаге будет выполнен оператор, написанный в цикле for . После этого будет выполнено третье выражение expression3 .

После выполнения выражения expression3 поток снова проверяет expression2 , и цикл продолжается до тех пор, пока expression2 не вернет false .

Простой пример цикла for в PHP

Рассмотрим случай, когда нужно вывести на экран числа от 1 до 10 через запятую. Ниже приведен код:

for($i=1;$i<=10;$i++) print $i.",";

Или с фигурной скобкой:

for($i=1;$i<=10;$i++) { print $i.","; }

Выражение $i=1 является expression1 , которое выполняется безоговорочно. Мы используем expression1 для инициализации переменной, равной $i=1 .

Expression2 – это выражение $i :

$i=1; for(;$i<=10;$i++) { print $i.","; }

$i=1; for(;$i<=10;) { print $i.","; $i++; }

Сложное выражение в цикле for

Можно написать три выражения в цикле for . Мы можем написать несколько операторов в каждом выражении в цикле for . Операторы нужно разделить запятой.

Рассмотрим пример предыдущего кода для вывода числа от 1 до 10 . С помощью нескольких операторов в выражении можно написать код, приведенный ниже:

for($i=1; $i<=10; print $i . ",", $i++);

Здесь выражение expression3 – это print $i.’,’, $i++ , которое объединяет два оператора, один – print $i. ‘,’ , а второй – $ i++ .

Выше приведен пример, в котором мы использовали несколько операторов в выражении expression3 . Но также можно использовать несколько операторов в любом выражении. Например:

Аналогично можно вывести все нечетные числа меньше 10 с помощью следующего кода:

Массив и цикл for в PHP

С помощью PHP цикла for можно выполнять итерацию в массиве. Например, у нас есть массив, который содержит имена разных людей. Нам нужно вывести на экран все имена:

$names = array("Ankur", "John", "Joy"); $count = count($names); for($counter=0;$counter<$count;$counter++){ print $names[$counter]; }

Также можно использовать многомерный массив в цикле for :

$names = array(array("id" => 1, "name" => "Ankur"), array("id" => 2, "name" => "Joe"), array("id" => 3, "name" => "John"),); $count = count($names); for ($counter = 0; $counter < $count; $counter++) { print "Name".$names[$counter]["name"]." ID".$names[$counter]["id"]."n"; }

Вложенный цикл for

Можно использовать вложенный цикл for в PHP . Пример:

$metrix = array(array(1, 2, 3), array(2, 1, 3), array(3, 2, 1),); $count = count($metrix); for ($counter = 0; $counter < $count; $counter++) { $c_count = count($metrix[$counter]); for ($child = 0; $child < $c_count; $child++) { echo $metrix[$counter][$child]; } }

У нас есть многомерный массив, и мы используем два цикла for PHP для отображения значений его элементов.

При использовании вложенного цикла можно использовать выражение родительского цикла for в дочернем. Например:

for ($i = 1; $i <= 5; $i++) { for ($j = 1; $j <= $i; $j++) { echo "*"; } echo "
"; }

Приведенная выше программа является одной из самых популярных для вывода символа * в форме прямоугольного треугольника.

Инкремент в цикле for

Почти в каждом из приведенных выше примеров мы использовали выражение expression3 , то есть последнее выражение в качестве инструкции инкремента. Также мы часто увеличивали значение на единицу во всех примерах, например, $i++ или $j++ и так далее. Но мы можем увеличивать счетчик в соответствии с нашими требованиями. Например, чтобы вывести все нечетные числа от 1 до 15 , можно инициализировать цикл значением 1 и выполнять итерации до 15 , увеличивая счетчик на 2 :

for($counter = 1; $counter <=15;$counter=$counter+2){ print $counter.","; }

Результатом работы приведенного выше кода будет «1,3,5,7,9,11,13,15 ». Здесь мы увеличиваем переменную счетчика на +2 с помощью выражения $counter=$counter+2 .

Выход из цикла for

Можно прервать цикл при определенном условии, используя ключевое слово break . Оно не является частью цикла и используется для прерывания выполнения операторов for , foreach , while , do-while и switch . Давайте посмотрим, как ключевое слово break останавливает цикл for .

Простой пример, в котором мы выводим все числа в массиве до 100 :

$series = array(1, 8, 5, 3, 100, 9, 7); for ($i = 0, $count = count($series); $i <= $count; $i++) { if (100 == $series[$i]) { break; } echo $series[$i] . " "; }

Здесь мы прерываем цикл, проверив, равно ли значение элемента массива 100 .

Также можно прервать вложенный PHP цикл по массиву, передав глубину, например, break 1 , break 2 и так далее. Посмотрите приведенный ниже пример:

for ($i = 0;; $i++) { switch ($i) { case 1: echo "This is one "; break 1; //Это прервет только оператор switch case 2: echo "This is two "; break 1; // Это снова прервет только оператор switch case 3: echo "This is three "; break 2; //Это прервет и switch , и цикл for } }

Здесь break 1 прерывает оператор switch , но break 2 прервет текущий оператор, а также родительский, то есть и switch , и for .

Использование continue в цикле for

В предыдущем разделе мы узнали, как выйти из цикла. Но что, если нужно пропустить одну итерацию цикла и вернуться назад к циклу? Для этого в PHP есть ключевое слово continue .

Вспомним пример вывода нечетных чисел. Все, что мы сделали, это начали цикл с 1 , увеличивали счетчик на 2 и выводили результат. Реализуем этот пример, используя continue :

for ($i = 0; $i < 20; $i++) { if ($i % 2 == 0) { continue; } echo $i . ","; }

В приведенном выше примере мы проверяем выражение $i%2 == 0 , и если оно верно, используя ключевое слово continue , мы пропускаем остальную часть цикла и возвращаемся к выражению expression3 ($i++) , а затем к expression2 ($i :

Иногда нужно перенести данные из таблицы базы данных в массив с помощью PHP :

10001, "name" => "Ankur", "country" => "India"), array("id" => 20002, "name" => "Joy", "country" => "USA"), array("id" => 10003, "name" => "John", "country" => "UK"), array("id" => 20001, "name" => "Steve", "country" => "France"),); ?>

" . "" . "" . "" . ""; } ?>
ID Name Country
" . $table_data[$i]["id"] . "" . $table_data[$i]["name"] . "" . $table_data[$i]["country"] . "

Приведенный выше код будет генерировать таблицу.

Я постарался рассказать о PHP цикле for как можно проще. Но если у вас есть какие-либо вопросы, пожалуйста, задавайте их в комментариях.

Данная публикация представляет собой перевод статьи «PHP For Loop With Examples – PHP Loop Tutorial » , подготовленной дружной командой проекта

Эту статью я пишу для новичков, которые только начинают изучать PHP . Расскажу я в этой статье о всевозможных циклах в PHP , так как данной статьи у меня на сайте не было. Были только , но, несмотря на общую схожесть, это всё-таки не то. В PHP есть 4 вида циклов .

  1. WHILE
  2. DO-WHILE
  3. FOREACH

Разберём их по порядку и начнём с самого популярного цикла в PHP (да и не только в PHP ) - это цикл FOR . Синтаксис у данного цикла следующий:

For(Выражение_1; Выражение_2; Выражение_3) {
операторы
}

Выражение_1 выполняется сразу же и безоговорочно, Выражение_3 выполняется после каждой итерации цикла. Выражение_2 - это проверка того, нужно ли продолжать цикл. Если результат выражения будет true , то начинается следующая итерация цикла, а если false , то цикл прекращает свою работу.

Следующий тип цикла - это WHILE . Это более простой тип циклов, синтаксис которого следующий:

While(Выражение) {
операторы
}

Пока Выражение возвращает true , цикл будет работать, а как только появится false , он прекращает свою работу.

Цикл DO-WHILE очень похож на WHILE , но с одним отличием. Условие выхода проверяется после выполнения итерации, а не до. Таким образом, данный цикл будет выполняться всегда хотя бы 1 раз. И вот синтаксис цикла DO-WHILE :

Do{
операторы
}while(Условие);

И, наконец, последний тип циклов - это foreach , который служит только для перебора массивов и объектов . Он необходим, когда ключами у массива являются не числа (которые легко перебрать через тот же FOR ), а строки. Синтаксис цикла FOREACH следующий:

Foreach($array_or_object as $key => $value) {
операторы
}

И, наконец, давайте применим все 4 типа циклов в PHP для перебора массивов :

$list = array(5, 2, 3, 10, 12, 10);
$array = array("a" => 1, "x" => 10, "m" => -5);
for ($i = 0; $i < count($list); $i++) {
echo $list[$i]."; ";
}
echo "
";
$i = 0;
while ($i < count($list)) {
echo $list[$i]."; ";
$i++;
}
echo "
";
$i = 0;
do {
echo $list[$i]."; ";
$i++;
}while($i < count($list));
echo "
";
foreach ($array as $key => $value) {
echo "$key = $value; ";
}
?>

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

Чтобы приступить к использованию циклов, нужно узнать, что они собой представляют, на что способны и зачем нужны в сценариях. Цикл - это блок кода, позволяющий повторять выполнение некоторых действий (инструкций) определенное количество раз. Каждое отдельное исполнение (одно или более повторений) последовательности инструкций в цикле называется - итерация .

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

Программный код цикла исполняется до тех пор, пока условное выражение цикла возвращает значение TRUE . Чтобы избежать бесконечного цикла, который будет крутиться вечно, код тела цикла должен заставить условное выражение в определенный момент вернуть значение FALSE . Когда это произойдет, работа цикла прекратится, и исполнение продолжится со строки кода, расположенной непосредственно после цикла.

Цикл while

Цикл while является простейшим видом цикла в PHP. Его синтаксис:

Ниже приводится пример цикла while , тело которого исполняется 10 раз:

\n"; $num++; } ?>

Перед началом цикла значение переменной $num устанавливается равным 1 (значение может быть любым). Это называется инициализацией переменной-счетчика. Каждый раз, когда исполняется тело цикла, с помощью инкремента $num++ значение переменной $num увеличивается на единицу. Значение выражения ($num <= 10) проверяется каждый раз перед итерацией цикла. После десяти итераций условное выражение вернет значение FALSE (так как значение переменной $num уже будет не меньше или равно 10) и работа цикла прекратится. В том случае, если условное выражение while будет равно FALSE с самого начала, тело цикла ни разу не будут выполнено.

Большинство циклов имеют переменные-счетчики, аналогичные $num . Чаще всего в качестве счетчиков цикла выступают переменные с именами i, j и k , хотя для того чтобы сделать программный код более понятным, следует давать счетчикам более наглядные имена.

Цикл do while

Цикл do while очень похож на цикл while , с тем отличием, что условное выражения проверяется в конце итерации, а не в начале. Синтаксис этого цикла:

Между циклом do while и обычным циклом while имеется два отличия. Во-первых, цикл do while требует как ключевого слова do (для отметки начала цикла), так и ключевого слова while (для отметки конца цикла и указания условия). Во-вторых, в отличие от цикла while , цикл do while завершается точкой с запятой. Данная разновидность цикла полезна, когда тело цикла должно быть исполнено хотя бы один раз, независимо от значения условного выражения.

Попробуем выполнить те же самые действия, что и в предыдущем примере:

\n"; $num++; } while ($num <= 10); ?>