16

我刚开始学习编程。我正在研究 for 循环,但该程序无法按预期工作。我想在 $a等于时打破循环,3以便获得输出1 2,但我得到3输出:(

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

请帮忙。

4

6 回答 6

41

后面缺少分号break


知道为什么你的程序会以它的方式运行是相当有趣的。

PHP中的一般语法break是:

break Expression;

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

break 0;break 1;一样break;

您的代码相当于

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

现在printPHP 中的函数总是返回1. 因此它等价于

if($a==3)
       break 1;

所以你什么时候$a打印3它的值并中断。

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

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

会给出一个语法错误:PHP 期望 a;但找到 a}

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

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

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

于 2010-09-05T18:41:12.783 回答
19

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

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

<?php
for($a=1;$a<10;++$a)
{
   if($a==3)
           break;
   print"$a ";
}
?>

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

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

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

这有时非常重要。要时刻铭记在心。

于 2010-09-05T18:43:36.723 回答
4

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

您的代码应如下所示:

for($a=0;$a<10;++$a)
{
       if($a==3)
           break;
       echo $a, ' ';
}
于 2010-09-05T18:43:29.577 回答
3
for($a=0;$a<10;++$a)
{
       if($a==3) break;
       print $a;
}

@Downvoters:除了我简洁之外还有什么问题?

于 2010-09-05T18:42:52.547 回答
0

echo代替print. _

于 2010-09-06T06:33:33.977 回答
0
for($a=0;$a<10;$a++) {
   if($a==3) { exit; }
   else { echo $a; }
}
于 2010-09-06T00:32:02.387 回答