简单的循环不工作

时间:2010-09-05 18:40:02

标签: php syntax loops for-loop break

我刚开始学习编程。我正在学习循环但是 此程序无法按预期工作。我想打破循环的时候 $a等于3,因此我得到输出1 2,但我得3作为输出:(

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

请帮忙。

6 个答案:

答案 0 :(得分:41)

break

之后

缺少分号


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

PHP中break的一般语法是:

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 :(得分:19)

你在休息结束时错过了一个分号。 ;)

即使使用分号,它也不会像您期望的那样工作,因为它会从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返回,然后增加1。

在你的情况下,两种方式都可以为你提供正确的输出。

这有时非常重要。请记住这一点。

答案 2 :(得分:4)

正如codaddict所说,你在休息后错过了分号。

您的代码应如下所示:

for($a=0;$a<10;++$a)
{
       if($a==3)
           break;
       echo $a, ' ';
}

答案 3 :(得分:3)

for($a=0;$a<10;++$a)
{
       if($a==3) break;
       print $a;
}
@Downvoters:除了我简洁之外还有什么问题?

答案 4 :(得分:0)

for($a=0;$a<10;$a++) {
   if($a==3) { exit; }
   else { echo $a; }
}

答案 5 :(得分:0)

使用echo代替print