Здрасте!
Подскажите, пожалуйста, почему код
$r = 3;
for( $r < 13; $r++;)
echo $r;
выполняется бесконечно?
PHP
Вопрос по циклу for в пхп
Вот как выглядит цикл:
for(initializator; condition; step)
Перед началом исполнения цикла выполняется initializator, после чего цикл выполняется до тех пор, пока condition не станет ложным. После каждого шага цикла выполняется step.
Другими словами, цикл for можно переписать при помощи while таким образом:
initializator;
while(condition) {
//... действия
step;
}
Разобравшись с этим, смотрим на твой код:
for( $r < 13; $r++;) echo $r;
У тебя нету step, зато есть инициализатор ($r < 13) и условие ($r++). Перед запуском цикла исполняется безсмысленное выражение, а цикл выполняется пока (bool) ($r++) равен true. $r++ всегда возвращает число, которое больше нуля, значит условие всегда true. Если переписать это на while, получится такое:
while(true) echo $r;
Поэтому цикл и выполняется вечно. Чтобы это исправить, нужно немного переписать код:
for($r = 3; $r < 13; $r++;)
for(initializator; condition; step)
Перед началом исполнения цикла выполняется initializator, после чего цикл выполняется до тех пор, пока condition не станет ложным. После каждого шага цикла выполняется step.
Другими словами, цикл for можно переписать при помощи while таким образом:
initializator;
while(condition) {
//... действия
step;
}
Разобравшись с этим, смотрим на твой код:
for( $r < 13; $r++;) echo $r;
У тебя нету step, зато есть инициализатор ($r < 13) и условие ($r++). Перед запуском цикла исполняется безсмысленное выражение, а цикл выполняется пока (bool) ($r++) равен true. $r++ всегда возвращает число, которое больше нуля, значит условие всегда true. Если переписать это на while, получится такое:
while(true) echo $r;
Поэтому цикл и выполняется вечно. Чтобы это исправить, нужно немного переписать код:
for($r = 3; $r < 13; $r++;)
Каждое из выражений может быть пустым или содержать несколько выражений, разделенных запятыми. В expr2 все выражения, разделенные запятыми, вычисляются, но результат берется из последнего. Если выражение expr2 отсутствует, это означает, что цикл будет выполняться бесконечно. (PHP неявно воспринимает это значение как TRUE, так же, как в языке C). Это может быть не так бесполезно, как вы могли подумать, так как часто необходимо прервать цикл, используя условный оператор break вместо использования выражения в цикле for, которое принимает истинное значение.
Рассмотрим следующие примеры. Все они отображают числа от 1 до 10: [далее смотри на официальном сайте https://www.php.net/manual/ru/control-structures.for.php]

Рассмотрим следующие примеры. Все они отображают числа от 1 до 10: [далее смотри на официальном сайте https://www.php.net/manual/ru/control-structures.for.php]

Похожие вопросы
- Что надо учить по пхп чтобы сдать на senjor ?
- дайте мне список cms, cmf и фреймворков на пхп для создания интернет магазинов
- почему на пхп програмистов говорят что они не програмисты. и гонят всякую хрень всякие си++шники и си шарпшики.
- какие есть видеокурсы по пхп
- Когда уже ПХП умрет?
- Зачем пхп валидации, когда хватает js?
- Как перевести данный код цикла из кодировки Mysqli в PDO?
- Как проще, лучше и быстрее из бд получить данные и поместить сразу в переменную или поместить в цикл и оттуда извлекать
- Вопрос про Denwer и OpenServer
- Ряд вопросов по собеседованию.