简单的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 ";
请帮忙。
【问题讨论】:
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
。
【讨论】:
以上是关于简单的for循环不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 p 标签的嵌套 v-for 循环在 Vue.js 中不起作用