Можно опустить все три выражения. В этом случае просто не будет задано начальное значение счетчика $i и оно не будет изменяться каждый раз в конце цикла. Все эти действия можно записать в виде отдельных команд либо в блоке_выполнения, либо перед циклом:
<?php
$i=0; // задаем начальное значение счетчика
for ( ; ; ){
if ($i>=10) break;
// если $i больше или равно 10,
// то прекращаем работу цикла
if ($i % 2 == 0) print $i;
// если число четное,
// то печатаем его
$i++; // увеличиваем счетчик на единицу
}
?>
В третье выражение конструкции for можно записывать через запятую сразу несколько простейших команд. Например, если мы хотим просто вывести все цифры, то программу можно записать совсем просто:
<?php
for ($i=0; $i<10; print $i, $i++)
/* Если блок_выполнения не содержит команд
или содержит только одну команду,
фигурные скобки, в которые он заключен,
можно опускать*/
?>
Еще одна полезная конструкция. Она появилась только в PHP4 и предназначена исключительно для работы с массивами.
Синтаксис:
foreach ($array as $value) {блок_выполнения}
либо
foreach ($array as $key => $value)
{блок_выполнения}
В первом случае формируется цикл по всем элементам массива, заданного переменной $array. На каждом шаге цикла значение текущего элемента массива записывается в переменную $value, и внутренний счетчик массива передвигается на единицу (так что на следующем шаге будет виден следующий элемент массива). Внутри блока_выполнения значение текущего элемента массива может быть получено с помощью переменной $value. Выполнение блока_выполнения происходит столько раз, сколько элементов в массиве $array.
Вторая форма записи в дополнение к перечисленному выше на каждом шаге цикла записывает ключ текущего элемента массива в переменную $key, которую тоже можно использовать в блоке_выполнения.
Когда foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый элемент.
<?php
$names = array('Иван','Петр','Семен');
foreach ($names as $val) {
echo 'Привет, $val <br>';
// выведет всем приветствие
}
foreach ($names as $k => $val) {
// кроме приветствия,
// выведем номера в списке, т.е. ключи
echo 'Привет, $val !
Ты в списке под номером $k <br>';
}
?>
Операторы передачи управления
Иногда в случае особых обстоятельств требуется немедленно завершить работу цикла и передать управление первой инструкции программы, расположенной за последней инструкцией цикла. Для этого используют операторы break и continue.
Оператор break заканчивает выполнение текущего цикла, будь то for, foreach, while, do..while или switch. break может использоваться с числовым аргументом, который говорит, работу скольких управляющих структур, содержащих его, нужно завершить.
<?php
$i=1;
while ($i) {
$n = rand(1,10);
// генерируем произвольное число
// от 1 до 10
echo '$i:$n ';
// выводим номер итерации и
// сгенерированное число
if ($n==5) break;
/* Если было сгенерировано число 5,
то прекращаем работу цикла. В этом случае
все, что находится после этой строчки
внутри цикла, не будет выполнено */
echo 'Цикл работает <br>';
$i++;
}
echo '<br>Число итераций цикла $i ';
?>
Результатом работы этого скрипта будет примерно следующее: