while文をネスト

広告

while文に限ったことではありませんが、while文の中で実行される処理の中でさらに別のwhile文を記述することができます。

while (条件式1){
  実行する処理;
  実行する処理;

  while (条件式2){
    実行する処理;
  }
}

外側のwhile文の条件式が真(TRUE)だった場合に、ブロック内の処理が実行されます。そして実行する処理の一つとして内側に記述されたwhile文が実行されます。外側のwhile文のブロック内の処理が1回行われる毎に内側のwhile文が繰り返し実行されることになります。

例えば次のような使い方をします。

$i = 0;

while ($i < 3){
  $j = 0;

  while ($j < 3){
    print '(i, j)=('.$i.','.$j.')';
    $j += 1;
  }
  $i += 1;
}

この場合では外側のwhile文が1回実行されるたびに内側のwhile文が3回実行されます。外側のwhile文は3回実行されますので、よって一番内側の処理は合計9回実行されることになります。

このように2つの条件を変化させながら繰り返し処理を行わせることはよく行われる処理です。

サンプルコード

では簡単なプログラムで試して見ます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<p>
<?php
$i = 0;

while ($i < 3){
  $j = 0;

  while ($j < 3){
    print '(i, j)=('.$i.','.$j.')<br />';
    $j += 1;
  }
  $i += 1;
}
?>
</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

while文をネスト

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。