我剛開始學習編程。我正在學習循環,但 此程序無法按預期方式工作。我想打破循環的時候 $a
等於3
所以我得到的輸出1 2
但我得到3
作爲輸出:(簡單的循環不工作
for($a=0;$a<10;++$a)
{
if($a==3)
break
print"$a ";
}
請幫助。
我剛開始學習編程。我正在學習循環,但 此程序無法按預期方式工作。我想打破循環的時候 $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
。
for($a=0;$a<10;++$a)
{
if($a==3) break;
print $a;
}
@Downvoters:除了我是簡潔之外怎麼了?
不是下來的選民,但那是多餘的 – 2010-09-05 18:59:22
你缺少斷裂的最後一個分號。;)
即使使用分號,它也不會像你期望的那樣工作,因爲它將從0
到2
。你必須這樣寫才能得到1 2
。
<?php
for($a=1;$a<10;++$a)
{
if($a==3)
break;
print"$a ";
}
?>
注意$ a現在是for循環初始化中的一個。
編輯:我注意到你應該知道的另一件事。在你的循環控制中,你有一個預增量(++$a
)。這基本上意味着PHP增加值$a
,然後返回$a
。另一個選項是後增量($a++
),其中$a
得到返回,然後增加1。
在你的情況下,兩種方式都會得到正確的輸出。
這有時是非常重要的。要時刻銘記在心。
for($a=0;$a<10;$a++) {
if($a==3) { exit; }
else { echo $a; }
}
使用'exit'可能不是正確的想法 - 堅持使用'break'會更好。 – 2010-09-07 00:23:12
使用echo
代替print
。
使用大括號+1。 – 2010-09-05 19:09:30
@bmb:+大括號。我已經添加到我的答案。 – codaddict 2010-09-06 18:11:40