繁体   English   中英

PHP进入无限循环

[英]PHP goes on infinite loop

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

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

这是我正在使用的代码

<?php 
$sofar = 1;

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

?>

您的问题是对增量使用两个等号。 $sofar = $sofar + 1是正确的,但是您有$sofar == 另外, $sofar++++$sofar可以。

你基本上在做什么

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

因此您的表情将评估为

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

对于$ so从未有过的困难,您必须使用=更改或设置变量的值。

您还在while语句的末尾添加了分号,分号表示PHP语句的末尾。

你应该在做

if( condition )
{

}
<?php 
$sofar = 1;

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

?>

您有一个=号太多

而且你有一个; 过了一会儿

一个=符号分配值两个==符号比较值

您还可以使用:

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

也许:

$sofar = 1;

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

是的,绝对应该是:

$sofar = $sofar + 1

而不是

$sofar == $sofar + 1

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

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

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

<?php 
$sofar = 1;

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

++递增。

==比较运算符 ,而不是赋值运算符= ),因此指令$sofar == $sofar+1; 实际上什么都不做(它返回false到无处)。

换句话说: $sofar始终为1

您的while语句结尾处有分号。 这相当于

while ($sofar == 1) {

}

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

<?php 
$sofar = 1;

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

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM