简单的for循环不起作用[关闭]

Posted

技术标签:

【中文标题】简单的for循环不起作用[关闭]【英文标题】:Simple for loop not working [closed] 【发布时间】:2011-04-08 12:24:14 【问题描述】:

我刚刚开始学习编程。我正在学习循环但是 这个程序没有按预期工作。我想在什么时候打破循环 $a 等于 3 所以我得到输出 1 2 但我得到 3 作为输出:(

for($a=0;$a<10;++$a)

       if($a==3)
               break
       print"$a ";

请帮忙。

【问题讨论】:

这是一个很好的例子来支持总是使用花括号的论点。使用它们,您会遇到语法错误。 @bmb: + 用于大括号。我已将其添加到我的答案中。 【参考方案1】:

break 后缺少分号


知道你的程序为什么会这样是很有趣的。

breakphp 中的一般语法是:

break Expression;

表达式是可选的,但如果存在,它的值会告诉你有多少嵌套 封闭结构将被打破。

break 0;break 1;break; 相同

你的代码相当于

if($a==3)
       break print"$a ";

现在 PHP 中的 print 函数总是返回 1。因此它等价于

if($a==3)
       break 1;

所以当$a3 时,你打印它的值并中断。

建议使用大括号将条件或循环的主体括起来,即使主体只有一条语句。在这种情况下,将 if 主体括在大括号中:

if($a==3) 
  break

print"$a ";

会出现语法错误:PHP 需要 ;,但找到

以上所有内容也适用于 PHP continue。所以程序

for($a=0;$a<10;++$a)

       if($a==3)
               continue
       print"$a ";

出于类似的原因也会打印3

【讨论】:

什么执行鹅追逐! 我其实并不知道。 +1【参考方案2】:
for($a=0;$a<10;++$a)

       if($a==3) break;
       print $a;

@Downvoters:除了我言简意赅还有什么问题?

【讨论】:

不是反对票,但那是多余的【参考方案3】:

正如 codaddict 所说,您在 break 后缺少分号。

您的代码应如下所示:

for($a=0;$a<10;++$a)

       if($a==3)
           break;
       echo $a, ' ';

【讨论】:

@Downvoters 有什么问题... 不是反对者,但 OP 的问题是他没有得到语法错误。【参考方案4】:

您在 break 结束时缺少一个分号。 ;)

即使使用分号,它也不会像您期望的那样工作,因为它会从0 计数到2。你必须这样写才能得到1 2

<?php
for($a=1;$a<10;++$a)

   if($a==3)
           break;
   print"$a ";

?>

注意 $a 现在是 for 循环初始化中的一个。

编辑:我注意到的另一件事是您应该注意的。在您的 for 循环控制中,您有一个预增量 (++$a)。这基本上意味着 PHP 增加 $a 的值,然后返回 $a。另一种选择是后增量 ($a++),其中 $a 被返回,然后加一。

在您的情况下,两种方式都会为您提供正确的输出。

这有时很重要。请记住这一点。

【讨论】:

【参考方案5】:
for($a=0;$a<10;$a++) 
   if($a==3)  exit; 
   else  echo $a; 

【讨论】:

使用exit 可能不是正确的想法 - 坚持使用break 会更好。【参考方案6】:

使用echo 代替print

【讨论】:

以上是关于简单的for循环不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

简单的 For 循环在 cs6 上不起作用?

使用 p 标签的嵌套 v-for 循环在 Vue.js 中不起作用

更改文件名的简单循环不起作用

为啥我的 Linux bash 中这个简单的 FOR LOOP 不起作用?

fillOval() 在 if 语句中不起作用[关闭]

ggplot 如果它在 for 循环内则不起作用,尽管它在它之外工作 [重复]