Содержание
Цикл while
Синтаксис:
while (условие){ инструкция 1; инструкция 2; }
Условие в скобках должно быть true, чтобы цикл сработал. Простой пример:
$sum = 1 while ($i$sum += 3; $i++; print($sum); // вывод $sum }
Цикл for и цикл while взаимозаменяемы. Тут у кого какое предпочтение. Однако, когда известны начальная и конечная точки счетчика, рекомендую использовать цикл for. Когда неизвестна конечная точка счетчика (например, зачитаваем файл построчно, а количество строк в нем не знаем) — используем цикл while.
Управление циклами
Если в теле цикла стоит ‘break’ — то происходит выход из цикла. Если в теле стоит ‘continue’ — идет переадресация на условие цикла, а код ниже этой команды в теле цикла пропускается. Обе конструкции выходят из одного уровня циклов (если у нас вложенные циклы). А break 2; — выходим из цикла второго уровня вложенности. Это число должно соответствовать возможным уровня. Если не соответствует — выскочит фатальная ошибка. Примеры:
$i = 1; while ($i < 10){ print($i); $i++; if ($i == 5) break; // выход из цикла } $i = 0; while ($i < 10){ $i++; if ($i == 5) continue; // идем в условие цикла while print($i); // не выполнится, если i=5 }
Цикл do while
У циклов while и for есть недостаток: они могут ни разу не исполниться, если условие false. Однако иногда нужно, чтобы один цикл (одна итерация) прошел. Тогда применим цикл do-while. Синтасис:
do{ // минимум один раз исполнится Инструкция 1; Инструкция 2; }while(условие)
Нарисуем таблицу умножения с помощью цикла
<?php $cols = 10; // выведем за пределы кода, ставим число колонок $rows = 10; // ставим число строк $color = 'red'; // задаем фоновый цвет таблицы ?> <h1>Таблица умножения</h1> <table border="1"> <?php for($tr=1; $tr<=$rows; $tr++){ echo "<tr>"; for($td=1; $td<=$cols; $td++){ if($td==1 or $tr==1){ echo "<th style='background-color:$color'>", $tr * $td, "</th>"; }else{ echo "<td>", $tr * $td, "</td>"; } } echo "</tr>"; } ?> </table>
По сути, получился шаблон таблицы умножения. Три переменные вынесены за пределы кода, чтобы в любое время поменять свойства таблицы, не залезая в код.