PHP继续无限循环

时间:2011-01-06 21:22:09

标签: php infinite-loop

这段代码无限循环,给了我一个

  

致命错误:最长执行时间   超过30秒

这是我正在使用的代码

<?php 
$sofar = 1;

while ($sofar == 1);
{
echo $sofar;
$sofar == $sofar+1;
}

?>

7 个答案:

答案 0 :(得分:1)

您的问题是使用两个等号来表示增量。即$sofar = $sofar + 1是正确的,但您改为$sofar ==。或者,只需$sofar++++$sofar即可。

你基本上在做什么

if($sofar == $sofar+1){/*Nothing*/}

所以你的表达式会评估为

if(1 == 2){/*nothing*/}

对于$ sofar never cahnges,您必须使用=来更改或设置变量的值。

你还在while语句的末尾添加了一个分号,分号表示PHP语句的结束。

你应该这样做

if( condition )
{

}

答案 1 :(得分:1)

<?php 
$sofar = 1;

while ($sofar == 1)
{
echo $sofar;
$sofar = $sofar+1;
}

?>

你有一个=太多的标志

你有一个;过了一会儿。

一个=符号赋值 两个==符号比较值

你也可以使用:

$sofar++;
$sofar += 1;
$sofar = $sofar +1;

或者也许:

$sofar = 1;

while ($sofar == 1)
{
    echo ++$sofar;
}

答案 2 :(得分:1)

是的,当然,它应该是:

$sofar = $sofar + 1

而不是

$sofar == $sofar + 1

后一个(你正在使用)是一个条件语句。

答案 3 :(得分:0)

您使用的==不是赋值运算符,而是条件运算符。

您应该$sofar = $sofar+1;$sofar++;增加值

答案 4 :(得分:0)

<?php 
$sofar = 1;

while ($sofar == 1) {
  echo $sofar;
  $sofar++;
}
?>

++增加。

答案 5 :(得分:0)

==comparison operator,而非assigment operator=),因此指令$sofar == $sofar+1;实际上什么都不做(它返回false无处可去。)

换句话说:$sofar始终为1

答案 6 :(得分:0)

您的while声明末尾有一个分号。这相当于

while ($sofar == 1) {

}

因此会导致无限循环。此外,您正在进行比较,而不是作业。您的代码应如下所示:

<?php 
$sofar = 1;

while ($sofar == 1)
{
echo $sofar;
$sofar = $sofar+1;
}

?>