Вложенный цикл while php

Вложенный цикл while php thumbnail

while

(PHP 4, PHP 5, PHP 7, PHP 8)

Циклы while являются простейшим видом циклов в PHP. Они ведут себя так же, как и в языке C. Простейшей формой цикла while является следующее выражение:

Смысл выражения while очень прост. Оно указывает PHP выполнять вложенные выражения повторно до тех пор, пока выражение в самом while является true. Значение выражения expr проверяется каждый раз перед началом цикла, поэтому даже если значение выражения изменится в процессе выполнения вложенных выражений в цикле, выполнение не прекратится до конца итерации (каждый раз, когда PHP выполняет выражения в цикле – это одна итерация). Если выражение while равно false с самого начала, вложенные выражения ни разу не будут выполнены.

Также, как и с оператором if, вы можете группировать несколько выражений внутри одного цикла while, заключая эти выражения между фигурными скобками или используя альтернативный синтаксис:

while (expr): ement … endwhile;

Следующие примеры идентичны, и оба выведут числа от 1 до 10:

<?php

/* пример 1 */$i = 1;

while ($i <= 10) {

echo $i++; /* выводиться будет значение переменной

$i перед её увеличением

(post-increment) */

}/* пример 2 */$i = 1;

while ($i <= 10):

echo $i;

$i++;

endwhile;

?>

Dan Liebner ¶

1 month ago

While loops don’t require a code block (ement).

<?phpwhile( ++$i < 10 ); echo $i; ?>

scott at mstech dot com ¶

11 years ago

Just a note using the continue ement to forego the remainder of a loop – be SURE you’re not issuing the continue ement from within a SWITCH case – doing so will not continue the while loop, but rather the switch ement itself.

While that may seem obvious to some, it took a little bit of testing for me, so hopefully this helps someone else.

mparsa1372 at gmail dot com ¶

2 months ago

The example below displays the numbers from 1 to 5:

<?php

$x = 1;

while(

$x <= 5) {

echo “The number is: $x <br>”;

$x++;

}

?>

This example counts to 100 by tens:

<?php

$x = 0;

while(

$x <= 100) {

echo “The number is: $x <br>”;

$x+=10;

}

?>

synnus at gmail dot com ¶

5 years ago

<?php $t1 = micro(true);

$a=0;

while($a++ <= 1000000000);

$t2 = micro(true);

$x1 = $t2 – $t1;

echo PHP_EOL,’ > while($a++ <= 100000000); : ‘ ,$x1, ‘s’, PHP_EOL;$t3 = micro(true);

for($a=0;$a <= 1000000000;$a++);

$t4 = micro(true);

$x2 = $t4 – $t3;

echo PHP_EOL,’> for($a=0;$a <= 100000000;$a++); : ‘ ,$x2, ‘s’, PHP_EOL;$t5 = micro(true);

$a=0; for(;$a++ <= 1000000000;);

$t6 = micro(true);

$x3 = $t6 – $t5;

echo PHP_EOL,’ > $a=0; for(;$a++ <= 100000000;); : ‘ , $x3, ‘s’, PHP_EOL;?>

ravenswd at gmail dot com ¶

11 years ago

I find it often clearer to set a simple flag ($finished) to false at the start of the loop, and have the program set it to true when it’s finished doing whatever it’s trying to do. Then the code is more self-documenting: WHILE NOT FINISHED keep going through the loop. FINISHED EQUALS TRUE when you’re done. Here’s an example. This is the code I use to generate a random filename and ensure that there is not already an existing file with the same name. I’ve added very verbose s to it to make it clear how it works:

<?php

$finaldir = ‘download’;$finished = false; while ( ! $finished ): $rn = rand(); $outfile = $finaldir.’/’.$rn.’.gif’; if ( ! file_exists($outfile) ): $finished = true; endif;

endwhile; ?>

nickleus at gmail dot com ¶

3 years ago

<?php

$i = -1;

while ($i) {

echo $i++;

}

?>

outputs “-1” then stops because “0” (zero) gets evaluated as FALSE.

this demonstrates why it’s important for a PDO ement fetch-ing a column value inside a while-loop to test explicitly for FALSE.

qeremy [atta] gmail [dotta] com ¶

8 years ago

Instead of this usage;

<?php

$arr = array(“orange”, “banana”, “apple”, “raspberry”);$i = 0;

while ($i < count($arr)) {

$a = $arr[$i];

echo $a .”n”;

$i++;

}

$i = 0;

$c = count($arr);

while ($i < $c) {

$a = $arr[$i];

echo $a .”n”;

$i++;

}

?>

This could be more efficient;

<?php

while ($a = $arr[1 * $i++]) echo $a .”n”;

?>

chayes at antenna dot nl ¶

19 years ago

At the end of the while (list / each) loop the array pointer will be at the end.

This means the second while loop on that array will be skipped!

You can put the array pointer back with the reset($myArray) .

example:

<?php

$myArray=array(‘aa’,’bb’,’cc’,’dd’);

while (list ($key, $val) = each ($myArray) ) echo $val;

reset($myArray);

while (list ($key, $val) = each ($myArray) ) echo $val;

?>

er dot sarimkhan786 at gmail dot com ¶

5 years ago

simple pyramid pattern program using while loop

<?php

$i=1;

while($i<=5)

{

$j=1;

while($j<=$i)

{

echo”*&nbsp&nbsp”;

$j++;

}

echo”<br>”;

$i++;

}

?>

// or alternatively you can use:

<?php

$i=1;

while($i<=5):$j=1;

while($j<=$i):

echo”*&nbsp&nbsp”;

$j++;

endwhile;

echo”<br>”;

$i++;

endwhile;

?>

Источник

  • Цикл while
  • Цикл do while

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

Читайте также:  Цикл передач человек и мир

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

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

Цикл while

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

синтаксис цикла while в PHP

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

<?php $num = 1; while ($num <= 10) { echo “Итерация номер: $num<br>n”; $num++; } ?>

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

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

Цикл do while

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

синтаксис цикла do while в PHP

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

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

<?php $num = 1; do { echo “Итерация номер: $num<br>n”; $num++; } while ($num <= 10); ?>

Источник

Циклы

Последнее обновление: 11.03.2021

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

  • for

  • while

  • do..while

  • foreach (рассматривается в теме про массивы)

Цикл for

Цикл for имеет следующее формальное определение:

for ([инициализация счетчика]; [условие]; [изменение счетчика]) { // действия }

Рассмотрим стандартный цикл for:

<?php for ($i = 1; $i < 10; $i++) { echo “Квадрат числа $i равен ” . $i * $i . “<br/>”; } ?>

Первая часть объявления цикла – $i = 1 – создает и инициализирует счетчик – переменную $i. И перед выполнением цикла его значение будет равно 1. По сути это то же самое, что и объявление переменной.

Вторая часть – $i < 10; – условие, при котором будет выполняться цикл. В данном случае цикл будет выполняться, пока $i не достигнет 10.

Третья часть – $i++ – изменение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: $i–. Или, например, увеличить не на 1, на 3: $i +=3.

В итоге блок цикла сработает 9 раз, пока значение $i не станет равным 10. И каждый раз это значение будет увеличиваться на 1. Каждое отдельное повторение цикла называется итерацией. Таким образом, в данном случае произойдет 9 итераций.

В итоге браузер отобразит нам следующий результат:

Квадрат числа 1 равен 1 Квадрат числа 2 равен 4 Квадрат числа 3 равен 9 Квадрат числа 4 равен 16 Квадрат числа 5 равен 25 Квадрат числа 6 равен 36 Квадрат числа 7 равен 49 Квадрат числа 8 равен 64 Квадрат числа 9 равен 81

Объявление цикла for может опускать отдельный части. Например, опустить определение счетчика (он может быть определен вне цикла):

$i = 5; for (; $i < 10; $i++) { echo $i; }

Можно опустить изменение значения счетчика и изменять его внутри цикла:

$i = 0; for (; $i < 10;) { echo $i; $i += 2; }

В данном случае в цикле на каждой итерации переменная $i увеличивает значение на 2. Соответственно мы получим следующий результат:

02468

Также можно в объявлении цикла определять и использовать сразу несколько переменных:

for ($i =1, $j=1; $i + $j < 10; $i++, $j+=2) { echo “$i + $j = ” . $i + $j . “<br>”; }

В данном случае в объявлении цикла определяются две переменных: $i и $j. При каждой итерации переменная $i увеличивается на 1, а $j – на 2. При этом цикл продолжается, пока сумма двух переменных не достигнет 10:

Читайте также:  Сезонные циклы в жизни человека

1 + 1 = 2 2 + 3 = 5 3 + 5 = 8

Также можно применять альтернативный синтаксис, при котором вместо открывающей фигурной скобки ставится двоеточие, а вместо закрывающей фигурной скобки – ключевое слово endfor:

for ($i = 1; $i < 10; $i++): echo “Квадрат числа $i равен ” . $i * $i . “<br/>”; endfor;

Цикл while

Цикл while проверяет истинность некоторого условия, и если условие истинно, то выполняются блок выражений цикла:

<?php $counter = 1; while($counter<10) { echo $counter * $counter . “<br />”; $counter++; } ?>

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

<?php $counter = 0; while(++$counter<10) echo $counter * $counter . “<br />”; ?>

Также можно применять альтернативный синтаксис, при котором вместо открывающей фигурной скобки ставится двоеточие, а вместо закрывающей фигурной скобки – ключевое слово endwhile:

$counter = 1; while($counter<10): echo $counter * $counter . “<br />”; $counter++; endwhile;

Цикл do..while

Цикл do..while похож на цикл while, только теперь выполняется блок цикла, и только потом выполняется проверка условия. То есть даже если условие ложно, то блок цикла выполнится как минимум один раз:

<?php $counter = 1; do { echo $counter * $counter . “<br />”; $counter++; } while($counter<10) ?>

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

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

<?php for ($i = 1; $i < 10; $i++) { $result = $i * $i; if($result>80) { break; } echo “Квадрат числа $i равен $result <br/>”; } ?>

И если вдруг результат операции окажется больше 80, то происходит выход из цикла.

Для управления циклами также применяется оператор continue. Он осуществляет переход к следующей итерации цикла:

<?php for ($i = 1; $i < 10; $i++) { if($i==5) { continue; } echo “Квадрат числа $i равен ” . $i * $i . “<br/>”; } ?>

При выполнении программы, когда значение $i станет равным 5, произойдет переход к следующей итерации, а все остальные выражения, которые следуют после оператора continue выполняться не будут.

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

Циклы могут располагаться внутри циклов. Например, используем вложенный цикл, чтобы вывести таблицу умножения:

<!DOCTYPE html> <html> <> <title>NIT.COM</title> < charset=”utf-8″ /> </> <body> <table> <?php for ($i = 1; $i < 10; $i++) { echo “<tr>”; for ($j = 1; $j < 10; $j++) { echo “<td>” . $i * $j . “</td>”; } echo “</tr>”; } ?> </table> </body> </html>

В данном случае код php помещен в элемент <table>, то есть в нем будет создаваться таблица.

Во внешнем цикле определяется переменная-счетчик $i. В этом – внешнем цикле на страницу выводится тег <tr>, то есть тег строки:

for ($i = 1; $i < 10; $i++) { echo “<tr>”;

Далее запускается вложенный цикл, определяется переменная-счетчик $j. Цикл последовательно увеличивает значение переменной $j на единицу и умножает ее значение на значение переменной $i. Результат выводится в элемент <td>:

for ($j = 1; $j < 10; $j++) { echo “<td>” . $i * $j . “</td>”;

После 9 итераций, когда переменная $j достигнет 10, вложенный цикл завершается, и внешний цикл выводит закрывающий тег строки:

echo “</tr>”; }

И запускается новая итерация внешнего цикла.

В итоге скрипт сформирует таблицу умножения:

Источник

1.

Что такое цикл в PHP

2.

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

3.

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

4.

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

5.

Специальный цикл перебора массивов (foreach)

6.

Конструкия break

7.

Конструкия continue

7.

Конструкия goto

Что такое цикл в PHP

Сейчас мы приступим к одной из важнейших тем в изучении php – это циклы. Они используются практически на каждом сайте, где выводятся какие-либо динамические данные.

Цикл – это блок кода, который повторяет определённое действие (инструкцию), пока не будет выполнено условие. Например, выводить строку Привет, мир! пока количество действий (выводов строки) не достигнет 5. Каждое подобное исполнение (одно и более повторений) называется

итерацией

.

Код PHP

<?php
// переменные, с которыми будем работать
$num = 1;
$hello = “Привет, мир!”;
// начинаем цикл
while ($num <= 5) {
echo “$hellon”;
echo “Итерация номер: $numn”;

$num++; // Внимание! Тут увеличиваем количество показов. Теперь +1
// И снова возвращаемся в начало цикла. Проверять, не достигло ли $num значения 5
// Если $num не увеличивать с каждым ходом цикла, то цикл будет бесконечным!
}
?>

Демонстрация Скачать исходники

Каждый цикл делится на две составные части: условие выполнения цикла (когда, при каких условиях, до каких пор) и действие, программный код, который каждый раз выполняется, если цикл не закончен. Действие может состоять из одной и более инструкции, все из которых должны быть заключены в фигурные скобки {}.

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

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

В цикле while есть предусловие, которое при возвращении TRUE выполняет действие в теле цикла и возвращается к предусловию. Цикл работает до тех пор, пока предусловие не вернёт FALSE.

Читайте также:  Презентация на тему циклы двс

Логика цикла while (логическое выражение)
инструкция;

В качестве тела цикла выступает инструкция. В теле может содержатся один или несколько операторов. Перейдём к примеру.

Код PHP

<?php
// переменные, с которыми будем работать
$num = 1;
// начинаем цикл
while ($num <= 5) {
echo “$num”;

$num++; // Внимание! Тут увеличиваем количество показов. Теперь +1
// И снова возвращаемся в начало цикла. Проверять, не достигло ли $num значения 5
// Если $num не увеличивать с каждым ходом цикла, то цикл будет бесконечным!
}
// Выведет “12345”
?>

Демонстрация Скачать исходники

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

Данный цикл похож в своей работе на while, но отличается только тем, что проверка условия проходит

после

проработки инструкции (действия). То есть как минимум цикл проработает 1 раз.

Логика цикла do
{
тело цикла;
}
while (логическое выражение);

Теперь прошлый пример рассмотрим через цикл do while.

Код PHP

<?php
// переменные, с которыми будем работать
$num = 1;
// начинаем цикл
do {
echo “$num”;

$num++;
} while ($num <= 5);
// Выведет “12345”
?>

Как видите, результат получился тот же самый. Однако, если переменная $num сразу будет не соответствовать условию, например, будет равно 11, то 1 раз цикл всё равно проработает. Данный цикл используется редко, но всё же подобная конструкция востребована.

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

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

Логика цикла for (инициализирующие команды; условие; команды после итерации) {
тело_цикла;
}

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

Код PHP (несколько примеров)

<?php
for ($x=0; $x<10; $x++) echo $x;
// Выводит 0123456789
// можно совместить условие и команды после итерации
for ($y=0; $y++<10;) echo $y;
// Выводит 12345678910
// можно задать несколько переменных, условий, команд.
// Но они должны быть через запятую!
for ($a=0, $b=0; $a<10; $a++, $b++) echo $a;
// Выводит 0123456789
// Любопытный пример
for($c=0,$d=0,$t=”Zzz”; $c<10; $d++,$с+=$d) {
$t=$t.”.”;
echo $t;
}
// Выводит Zzz.Zzz..Zzz…Zzz….
?>

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

Данный вид цикла используется для обработки массивов. Появился с PHP 4.

Логика цикла foreach (массив as $ключ=>$значение)
команды;

Команды циклически выполняются для каждого элемента массива, при этом очередная пара ключ=&gt;значение оказывается в переменных $ключ и $значение. Пример работы цикла foreach:

<?php
$capitals[“Россия”] = “Москва”;
$capitals[“Украина”] = “Киев”;
$capitals[“Беларусь”] = “Минск”;
$capitals[“Казахстан”] = “Астана”;
foreach ($capitals as $key => $value) {
echo “<p>$value – $key</p>”;
}
?>

Демонстрация Скачать исходники

Код выведет следующее:

Москва – Россия

Киев – Украина

Минск – Беларусь

Астана – Казахстан

Но можно вывести только значения. Смотрим пример ниже

<?php
$capitals[“Россия”] = “Москва”;
$capitals[“Украина”] = “Киев”;
$capitals[“Беларусь”] = “Минск”;
$capitals[“Казахстан”] = “Астана”;
foreach ($capitals as $value) {
echo “$value “;
}
?>

Код будет выведено так:

Москва Киев Минск Астана

Демонстрация Скачать исходники

Конструкция break

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

Пример конструкции break:

<?php
$x=0;
while ($x++<10) {
if ($x==3) break;
echo “<p>$x</p>”;
}
// Когда $x равен 3, цикл прерывается
// выведет “12”
?>

Демонстрация Скачать исходники

Конструкция continue

Конструкция continue нужна для немедленного прекращения текущей итерации цикла и переходу к следующей (если в цикле подразумевается предусловие). Как и для break, можно указать условие вложенности цикла, при котором конструкция вступит в действие.

Пример конструкции break:

<?php
$a=0;
while ($a++<5) {
if ($a==3) continue;
echo “$a”;
}
// Цикл пропустит третью итерацию
// Выведет “1245” Значение 3 будет пропущено.
?>

Демонстрация Скачать исходники

Конструкция goto

goto – оператор безусловного перехода. При упоминании goto и

названия метки

идёт поиск самой метки, куда нужно перейти. Сама метка ставится после оператора и имеет вид название: .

Синтаксис

goto название_метки; // указываем желаемую метку
echo ‘hello’;

название_метки: // место перехода
echo ‘world’;

Пример goto

<?php
$a = 0;
for ($a = 0; $a < 10; $a++) {
if ($a == 5) // если значение переменной $a равно 5
goto end; // то переходим к выполнению инструкций следующих за меткой
echo “$a”;
}
echo ‘после цикла – до метки’; // инструкция не будет выполнена

end:
echo ‘После метки’;
?>

Демонстрация Скачать исходники

Спасибо за внимание и удачи в изучении php!

Источник