我可能在哪里搞乱for循环?

时间:2012-06-26 04:57:47

标签: php

这是我正在做的事(php)

<?php

for($i = 0; $i <= 30; $i+2)
{
  echo $i;
}
?>

它让我疯了,因为它不起作用[什么都不打印,浏览器一直试图加载]。但是,如果我将$i+2更改为$i++,它就可以正常工作,如果我将其更改为$i+1,那么这也无效。

我的斗智斗勇。出了什么问题?

4 个答案:

答案 0 :(得分:4)

  

它让我疯了,因为它不起作用[什么都不打印,浏览器一直试图加载]。但是,如果我将$i+2更改为$i++,它就可以正常工作,如果我将其更改为$i+1,那么这也无效。

$i++相当于$i = $i + 1,请注意分配运算符=,此处不存在$i + 2添加但不更新...

因为$i永远不会更新,所以你有一个无限循环,脚本可能会达到允许的处理和终止时间。

http://php.net/manual/en/function.set-time-limit.php

  

设置允许脚本运行的秒数。如果达到此值,脚本将返回致命错误。默认限制为30秒,如果存在,则为php.ini中定义的max_execution_time值。

答案 1 :(得分:2)

您需要将$i+2更改为$i = $i + 2$i += 2$i++表示$i += 1

for($i = 0; $i <= 30; $i += 2)
{
  echo $i;
}

答案 2 :(得分:2)

每次迭代后,您需要为for循环提供一些递增/递减值。 $ i + 2不会改变i的值。所以在你的情况下发生的是for循环为每个连续的迭代找到相同的i值。因此永远不会满足终止条件。 for循环因此陷入无限循环。

更改:$i+1$i=$i+1$i+=1

$i++实际上意味着$i=$i+1

答案 3 :(得分:1)

您必须更改为$i=$i+2,因为$i++等于$i=$i+1