sasha300
4.05.2013 - 02:44
Вот код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Цикл for</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
<h1>Цикл for</h1>
<?php
for (;;){
echo $a.'<br>';
}
?>
</body>
</html>
При запуске браузер зависает, но почему, если вот тут значение должно быть "false", а получается "true"
![user posted image](http://img14.imageshost.ru/img/2013/05/04/image_51844001c8e73.jpg)
p.s.: и почему не работает "уведомление на e-mail при ответах?"?
sasha300, таким способом объявляется бесконечный цикл.
Неудивительно, что браузер "зависает".
Точно так же объявляется, кстати, и в С/C++. А поскольку PHP написан именно на нем, смею предположить, что реализация циклов сишная (нативная, ассемблеровская - не знаю как сказать - короче, без преобразований). Тем более что синтаксис один в один... А почему так - это вопрос к разработчикам С! =)
Из книги "Язык программирования Си", Б. Керниган и Д. Ритчи (разработчик):
Цитата |
Грамматически все три компонента в FOR являются выражениями. Наиболее распространенным является случай, когда выражение 1 и выражение 3 являются присваиваниями или обращениями к функциям, а выражение 2 - условным выражением. Любая из трех частей может быть опущена, хотя точки с запятой при этом должны оставаться. Если отсутствует выражение 1 или выражение 3, то оно просто выпадает из расширения. Если же отсутствует проверка, выражение 2, то считается, как буд-то оно всегда истинно, так что FOR(;;){...} является бесконечным циклом. |
Вот примерно так!
sasha300
4.05.2013 - 04:16
paul85
В общем для функции for если значение не определено, то оно "true". Странно..
Большое спасибо за ответ!
sasha300, ну почему странно? Очень хороший и простой способ объявить бесконечный цикл! Правда потребность в нем - явление довольно редкое. В основном когда требуется сложное условие его прекращения, которое 3-мя выражениями определить невозможно, или неудобно.
Тогда пишут условие внутри цикла и выходят из него через break. В С еще можно по return, но не знаю работает ли в PHP...
andrey888
4.05.2013 - 11:05
Цитата |
В С еще можно по return, но не знаю работает ли в PHP... |
работает.
Цитата |
В общем для функции for если значение не определено, то оно "true". Странно.. |
Наоборот логично. For это цикл а не функция. В условии цикла есть выражение которое обязано приводиться к Булеву типу .
for (;;){
echo $a.'<br>';
}
- вот мы и едем )
_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.