【问题标题】:php, infinite loop in while() loopphp,while()循环中的无限循环
【发布时间】:2011-11-19 20:03:21
【问题描述】:
/// infinite loop??
$x=1; 
while($x=9){ 
echo $x;
$x++;
}

我不明白背后的原因,为什么上面的代码会导致无限循环 在我看来,上面的代码应该输出一次“9”。但它输出无穷无尽的999999999......

起初(当 x 等于 1 时)while 语句为假,所以什么也没有发生, 然后 x 变为 2 但 while 语句再次为假;

所以当 x 变为 9 而语句为真时,它应该回显 9,然后由于 x++,我们加 1;它变成了 10,所以 while 语句变为错误,但我认为它不是因为

它继续回显 9999999.......

请告诉我上面的代码。最好的问候。

注意:我检查了类似的问题,但找不到适合我情况的答案 thx

【问题讨论】:

  • 为此,很多情况下你会看到写成 if (9 == $x) 来避免这样的错误。
  • 我认为你应该从你的 x=9 进入 while 循环的第一刻就假设出了问题。如果 while 条件为假,那么 $x++ 甚至不会全部运行。

标签: php while-loop infinite-loop


【解决方案1】:

$x=9 是一个赋值,并且始终为真。也许您的意思是$x==9,或其他一些关系运算符。

【讨论】:

    【解决方案2】:

    你是说

    $x == 9
    

    但在您的示例中,它不会做任何事情,因为 $x != 9。您可能的意思是

    while($x < 9)
    

    【讨论】:

    • 旧线程,但以防有人阅读。但是在您的示例中,它不会做任何事情,因为 $x != 9。您可能的意思是 while($x
    【解决方案3】:

    您将值 9 分配给变量 x,而不是执行关系比较。一个常见的错误。 = 是赋值运算符,而 == 是相等比较运算符。

    http://en.wikipedia.org/wiki/Assignment_(computer_science)#Assignment_versus_equality

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 1970-01-01
      • 2014-03-29
      • 2015-06-25
      • 2012-12-24
      • 2013-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多