プログラミングの勉強を始めたばかりです。for ループについて勉強していますが、このプログラムは期待どおりに動作しません。$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 ";
現在、print
PHP の関数は常に を返し1
ます。したがって、それは
if($a==3)
break 1;
それで、いつその$a
値3
を印刷して休憩しますか。
本体に単一のステートメントがある場合でも、中括弧を使用して条件またはループの本体を囲むことをお勧めします。この場合、if
本文を中かっこで囲みます。
if($a==3) {
break
}
print"$a ";
PHP は a を期待している;
が、a を見つけます。}
上記のすべては PHPcontinue
にも当てはまります。だからプログラム
for($a=0;$a<10;++$a)
{
if($a==3)
continue
print"$a ";
}
3
も同様の理由で印刷されます。
ブレークの最後にセミコロンがありません。;)
0
また、セミコロンを使用しても、からからまでカウントされるため、期待どおりには機能しません2
。のみを取得するには、このように記述する必要があります1 2
。
<?php
for($a=1;$a<10;++$a)
{
if($a==3)
break;
print"$a ";
}
?>
$a は for ループの初期化の 1 つであることに注意してください。
編集:あなたが知っておくべきもう1つのことに気づきました。for ループ コントロールには、プレインクリメント ( ++$a
) があります。これは基本的に、PHP が の値をインクリメントして$a
から を返すことを意味します$a
。もう 1 つのオプションは、ポスト インクリメント ( $a++
) です。ここでは、$a
が返されてから 1 ずつインクリメントされます。
あなたの場合、どちらの方法でも正しい出力が得られます。
これは時々非常に重要です。それを覚えておいてください。
codaddict が言ったように、ブレーク後にセミコロンがありません。
コードは次のようになります。
for($a=0;$a<10;++$a)
{
if($a==3)
break;
echo $a, ' ';
}
for($a=0;$a<10;++$a)
{
if($a==3) break;
print $a;
}
@Downvoters: 私が簡潔である以外に何が問題なのですか?
for($a=0;$a<10;$a++) {
if($a==3) { exit; }
else { echo $a; }
}
echo
の代わりに使用しprint
ます。