Ну все же попробую. Есть такой оператор goto, безусловный переход по именованной метке. Внутри процессора нет циклов, там есть именно переходы. В php 5.3 его добавили после ожесточенных споров, потому что вообще говоря это плохой тон, но можно объяснить циклы на нем наглядно:
цикл while
PHP:
while (выражение истинно) {
повторять это;
}
Пример - вывод всех четных чисел от 2 до 20
PHP:
$i = 2;
while ($i <= 20) {
echo $i, "\n";
$i = $i + 2;
}
То же самое с использованием goto
PHP:
$i = 2;
a:
// условие выхода из цикла
if ( !($i <= 20) ) {
goto b;
}
// тело цикла
echo $i, "\n";
$i = $i + 2;
// повторение
goto a;
// конец
b:
цикл do...while : почти то же, что while, но условие проверяется после выполнения блока кода. То есть, используем в том случае, когда всегда надо выполнить тело цикла хотя бы 1 раз.
PHP:
do {
повторять это;
} while (выражение истинно);
Тот же пример:
PHP:
$i = 2;
do {
echo $i, "\n";
$i = $i + 2;
} while ($i <= 20);
То же самое, написанное с использованием goto:
PHP:
$i = 2;
// начало цикла
a:
// тело цикла
echo $i, "\n";
$i = $i + 2;
// условие повторения цикла
if ($i <= 20) {
goto a;
}
// конец
цикл for - хитрая штука, объединяет в себя инициализацию, условие продолжения цикла и последний оператор тела цикла
PHP:
for (инициализация; условие; последний оператор) {
повторять это
}
Тот же пример с использованием for. Заметь краткость записи - именно для этого он и придуман. Также заметь, что инициализацию мы уже пишем внутри for(), а не отдельно выше.
PHP:
for ($i = 2; $i <= 20; $i = $i + 2) {
echo $i, "\n";
}
То же самое, написанное с использованием goto, заметь - полностью эквивалентно циклу while
PHP:
// инициализация - первое выражение в for
$i = 2;
a:
// условие выхода из цикла - второе выражение в for
if ( !($i <= 20) ) {
goto b;
}
// тело цикла
echo $i, "\n";
// последняя операция в цикле - третье выражение в for
$i = $i + 2;
// повторение
goto a;
// конец цикла
b: