Если писать так:
for($i = 0; $i<=0; $i++){
echo $i."<br>";
break;
}
echo $i;
то ответ:
0
0
А если так:
for($i = 0; $i<=0; $i++){
echo $i."<br>";
}
echo $i;
то ответ:
0
1
Почему так происходит, разве после прерывании с помощью break не должен выполняться дальше $i++?
Обратите внимание: http://php.net/manual/ru/control-structures.break.php break прерывает выполнение - читай выходит из конструкции цикла в тот момент, когда на него натыкается. При этом цикл for выполняет приращение, только перед вторым проходом цикла. Соответственно он не срабатывает после оператора break.
Само значение английского слова break - прервать, то есть выйти из цикла немедленно.
Противоположное значение имеет ключевое слово continue которое также прерывает выполнение текущей итерации цикла, но возвращает управление управляющему предложению цикла в ту его часть, где выполняется выражение $i++ , и цикл продолжится, если условие цикла по-прежнему будет истинно.
Обратите внимание на структуру оператора for:
for (initializer; condition; iterator)
{
body
}
Оператор break сразу завершает ближайший внешний цикл или оператор switch, в котором он появляется. Управление передается оператору, следующему за завершенным оператором (если таковой имеется). В данном примере выходит за пределы цикла, т.е. инкремент переменной не происходит.
Во втором случае нету оператора break, т.е. тело цикла выполняется пока верно выражение condition.
Для того чтобы чтобы прервать выполнение текущей итерации цикла и перейти к следующей используется оператор continue
Важно! Сначала выполняется iterator, а уже после него вычисляется condition. Iterator выполняется только один раз - в самом начале работы цикла, перед всеми частями цикла. В этом случае iterator пропускается и выполняется проверка условия condition
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости