「PHPの基礎 - 繰り返し」の版間の差分

ナビゲーションに移動 検索に移動
206行目: 206行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
==== breakとcontinue ====
==== break ====
 
繰り返し処理の中で<code>break</code>を実行すると、繰り返し処理を終了させることができる。<br>
<code>break</code>は、繰り返し処理の他に<code>switch</code>文でも使用される。<br>
<br>
以下の例では、変数の値を1から100まで変化させて合計した値を表示している。<br>
合計した値が1000を越える場合は<code>break</code>を実行して、<code>while</code>文を終了している。<br>
このように、<code>break</code>を使用することで任意のタイミングで<code>for</code>文や<code>while</code>文を終了することが可能となる。<br>
<syntaxhighlight lang="php">
$count = 1;
$sum = 0;
while($count <= 100)
{
    $sum += $count;
    if($sum > 1000)
    {
      print '1000を越えたので count = '.$count.' で終了します';
      break;
    }
    $count += 1;
}
// breakが実行された時に処理が移る位置
print 'sum = '.$sum;
</syntaxhighlight>
<br>
また、ネストされた繰り返し処理において、<code>break</code>に数値を記述すると、抜ける繰り返し処理の階層を指定することができる。<br>
break <階層数>;
<br>
以下の例では、<code>break</code>が実行された時に、2階層分の繰り返し処理を抜けている。<br>
このように、<code>break</code>を使用することで、単純に繰り返し処理を抜けるだけではなく、何階層抜けるのかを指定することも可能である。<br>
<syntaxhighlight lang="php">
$i = 1;
while($i < 5)
{
    $j = 1;
    while($j < 5)
    {
      if($i * $j > 15)
      {
          break 2;
      }
      $j += 1;
    }
    $i += 1;
}
// breakが実行された時に処理が移る位置
</syntaxhighlight>
<br>
==== continue ====
繰り返し処理の中で<code>continue</code>を実行する時、繰り返し処理のブロック内でそれ以降の処理を実行せずに、次の条件式の評価を行う。<br>
<br>
以下の例では、変数の値を1から100まで変化させて合計した値を出力している。<br>
<code>while</code>文の処理の中で、加算しようとする値が2の倍数である場合は、加算を行わずに次の条件式の評価へ処理が移る。<br>
このように、<code>continue</code>を使用することにより、細かく繰り返し処理を制御することが可能となる。<br>
<syntaxhighlight lang="php">
$count = 0;
$sum = 0;
while($count < 100)
{
    $count += 1;
    if($count % 2 == 0)
    {
      continue;
    }
    $sum += $count;
}
print 'sum = '.$sum;
</syntaxhighlight>
<br>
また、ネストされた繰り返し処理において、<code>break</code>と同様に階層数を指定することで、何階層を抜けて条件式の評価に戻るのかを指定することができる。<br>
<syntaxhighlight lang="php">
continue <階層数>;
</syntaxhighlight>
<br>
以下の例では、<code>continue</code>が実行された時、2階層分の残りの繰り返し処理を飛ばして、外側(while文)の条件式の評価に処理が移る。<br>
<code>break</code>と同様、<code>continue</code>を使用することにより、繰り返し処理の制御をより細かく行うことができる。<br>
<syntaxhighlight lang="php">
$count1 = 0;
$sum = 0;
while($count1 < 10)
{
    $count1 += 1;
    $count2 = 0;
    while($count2 < 10)
    {
      $count2 += 1;
      if($count1 * $count2 > 30)
      {
          continue 2;
      }
      $sum += $count1 * $count2;
    }
}
print 'sum = '.$sum;
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー