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

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

for($a=0;$a<10;++$a)
{
       if($a==3)
               break
       print"$a ";
}

请帮忙。

【问题讨论】:

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

标签: php syntax loops for-loop break


【解决方案1】:

break 后缺少分号


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

break 在 PHP 中的一般语法是:

break Expression;

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

break 0; 和break 1; 与break; 相同

你的代码相当于

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

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

if($a==3)
       break 1;

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

建议使用大括号将条件或循环的主体括起来,即使主体只有一条语句。在这种情况下,将 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2015-02-22
      • 2014-07-28
      • 1970-01-01
      • 2020-08-03
      相关资源
      最近更新 更多