Вопрос по for и break

354
11 января 2017, 04:03

Если писать так:

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++?

Answer 1

Обратите внимание: http://php.net/manual/ru/control-structures.break.php break прерывает выполнение - читай выходит из конструкции цикла в тот момент, когда на него натыкается. При этом цикл for выполняет приращение, только перед вторым проходом цикла. Соответственно он не срабатывает после оператора break.

Answer 2

Само значение английского слова break - прервать, то есть выйти из цикла немедленно.

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

Answer 3

Обратите внимание на структуру оператора for:

for (initializer; condition; iterator)  
{
    body  
}

Оператор break сразу завершает ближайший внешний цикл или оператор switch, в котором он появляется. Управление передается оператору, следующему за завершенным оператором (если таковой имеется). В данном примере выходит за пределы цикла, т.е. инкремент переменной не происходит.

Во втором случае нету оператора break, т.е. тело цикла выполняется пока верно выражение condition.

Для того чтобы чтобы прервать выполнение текущей итерации цикла и перейти к следующей используется оператор continue

Важно! Сначала выполняется iterator, а уже после него вычисляется condition. Iterator выполняется только один раз - в самом начале работы цикла, перед всеми частями цикла. В этом случае iterator пропускается и выполняется проверка условия condition

READ ALSO
Выборка из MySQL без повторений хотя бы одного значения

Выборка из MySQL без повторений хотя бы одного значения

Доброго времени суток, друзьяЕсть необходимость вывести из БД значения из определенного столбика

404
Как в php строку умножить на число?

Как в php строку умножить на число?

К примеру хочу строку "aaa" умножить на число 3, чтобы было "aaaaaaaaa"

531