B240 while文 / do – while文

while文 / do – while文はfor文同様に繰り返し処理を行う構文です。記載方法や特徴など異なる点も多いので今回はwhile文 / do – while文について紹介します。

while文 / do – while文について

while文

while 文は、条件が true と評価されている間、指定された文を繰り返し実行します。条件はその文を実行する前に評価されます。

PHP
while (条件){
  実行する文1;
  実行する文2;
  ...
};

実際に書いてみましょう。$numberが5より小さい場合に、$numberを出力し続けるようにしてみます。
この際、$number++; で$numberの数を増やすことを忘れないでください。この式を記載しない場合while文が常にtrueとなって処理がループしてしまい、$numberが無限に出力され続けます。
プログラムに負荷がかかりクラッシュしてしまう危険性があるため、while文を使う場合は繰り返しから抜け出す処理が記載されているか確認してください。

PHP
$number = 0;

while ($number < 5) {
  echo $number;
  $number++;
};

出力結果

PHP
01234

do – while文

do – while 文は指定された文を、テスト条件が false に評価されるまで繰り返し実行します。条件は文を実行した後に評価さるため、指定された文は少なくとも 1 回は実行されます。
実際に書いてみましょう。doで実行したあと、while文で繰り返すイメージです。

PHP
do {
  $number = 6;
  echo $number;
  $number++;
} while ($number < 5);

出力結果

PHP
6

break文

break文は処理を中断してループ処理を抜けます。後続にどのような処理があっても、break後は繰り返し処理が行われることがありません。

PHP
$number = 0;
for ($i = 0; $i < 10; $i++) {
    if ($i === 5) {
    break;
};
$number = $number + $i;
};
echo $number;

出力結果

PHP
40

“i === 5″の際にbreak文が実行され、ループ処理を抜けるため、”1~4”までの合算値が出力がされます。

continue文

break文が処理を中断してループ処理を抜けるのに対して、continue文は後の処理をスキップして元のループ文の先頭に戻り、処理を続行します。

PHP
$number = 0;

for ($i = 0; $i < 10; $i++) {
  if ($i === 5) {
    continue;
  };
  $number = $number + $i;
};

echo $number;

出力結果

PHP
40

“i === 5″の際にcontinue文が実行され、元のループ文の先頭に戻るため、”5”が飛ばされて”1~4”および”6~9”の合算値が出力がされます。

例題

以下コードの出力値はどれか

PHP
$number = 0;

for ($i = 1; $i < 10; $i++) {
  if ($i === 2) {
    break;
  }
  $number = $number + $i;
}

echo $number
  1. 013456789
  2. 01
  3. 13456789
  4. 1
回答

4. 1
iの初期値は1であり、”i === 2″の際にbreak文が実行され、ループ処理が終了するため。

---