简单的循环不工作

use*_*148 16 php syntax loops for-loop break

我刚开始学习编程.我正在学习循环,但这个程序没有按预期工作.我想在$a等于时打破循环 ,3这样我得到输出1 2但我得到3输出:(

for($a=0;$a<10;++$a)
{
       if($a==3)
               break
       print"$a ";
}
Run Code Online (Sandbox Code Playgroud)

请帮忙.

cod*_*ict 41

缺少分号break


了解为什么你的程序行为方式非常有趣.

breakPHP中的一般语法是:

break Expression;
Run Code Online (Sandbox Code Playgroud)

表达式是可选的,但如果存在,则其值表示要分解多少嵌套的封闭结构.

break 0;并且与... break 1;相同break;

你的代码相当于

if($a==3)
       break print"$a ";
Run Code Online (Sandbox Code Playgroud)

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

if($a==3)
       break 1;
Run Code Online (Sandbox Code Playgroud)

所以,当$a3打印的价值和休息.

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

if($a==3) {
  break
}
print"$a ";
Run Code Online (Sandbox Code Playgroud)

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

以上所有内容也适用于PHP continue.所以该计划

for($a=0;$a<10;++$a)
{
       if($a==3)
               continue
       print"$a ";
}
Run Code Online (Sandbox Code Playgroud)

3出于类似的原因打印.

  • 我其实不知道.+1 (2认同)

Oct*_*ean 19

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

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

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

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

编辑:我注意到你应该注意的另一件事.在for循环控件中,您有一个预增量(++$a).这基本上意味着PHP增加值$a然后返回$a.另一个选项是post-increment($a++)$a返回获取,然后增加1.

在你的情况下,两种方式都会得到正确的输出.

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