繰り返し

トップ > PHP入門 > 繰り返し

目次

広告

繰り返しについて

同じような処理を何度も繰り返すプログラムを書く場合、そのプログラムを何度も書けば実現することができます。例えば 繰り返しのテスト1。繰り返しのテスト10。 という文字を画面に表示させたい場合、一例ですが以下のようなプログラムを作成します。

<?php

echo "繰り返しのテスト1。<br />";
echo "繰り返しのテスト2。<br />";
echo "繰り返しのテスト3。<br />";
echo "繰り返しのテスト4。<br />";
echo "繰り返しのテスト5。<br />";
echo "繰り返しのテスト6。<br />";
echo "繰り返しのテスト7。<br />";
echo "繰り返しのテスト8。<br />";
echo "繰り返しのテスト9。<br />";
echo "繰り返しのテスト10。<br />";

?>

これはこれで問題なく動作します。ですが繰り返す回数が100回になった場合や繰り返し実行するプログラムの量が多い場合、この方法では少し面倒です。

このような場合、繰り返し用の命令を使用することにより、書くべきプログラムの量を少なくすることができます。

while制御文

繰り返し処理を行うための方法に、while 制御文があります。具体的には、以下のような書式で繰り返し処理を行います。

while (繰り返す条件) {
  条件に一致している場合に繰り返し実行するプログラム
}

実際に while 制御文を使用してプログラムを書くと、以下のようになります。

<?php

$count = 1;

while ($count <= 10) {
  echo "繰り返しのテスト{$count}。<br />\n";
  $count++;
}

?>

このプログラムの場合、繰り返す条件は $count <= 10 です。つまり、$count10 以下ならば処理が繰り返し実行されます。繰り返す処理の内容は echo "繰り返しのテスト{$count}。<br />\n";$count++; です。つまり、画面に 繰り返しのテスト。 と表示してから $count1 を加えます。

こうすれば $count10 以下の間、画面に文字列を表示してから $count の値が 1 ずつ増えていきます。そして $count の値が 10 以上になった時点で繰り返し処理は終了します。つまり、このページのはじめで紹介した処理と同じ結果を得る事ができます。

繰り返し処理を行う際、終わらないプログラムを書いてしまわないように注意してください。例えば上のプログラムで

$count++;

の行を忘れてしまうと while の条件に一致することが無いため、永遠にプログラムが処理され続けます。サーバーに高負荷がかかり、サーバーが停止してしまうかもしれません。レンタルサーバーでこのようなプログラムを実行すると、サーバーを追い出されるかもしれませんので注意してください。(この対策にも、自分のパソコンにサーバーをインストールして作成しましょう。)

do while制御文

while 制御文によく似たものに do while 制御文があります。while 制御文は最初に条件に一致しなければ一度も実行されませんが、do while 制御文なら少なくとも一度は処理が実行されます。具体的には、以下のようにします。

<?php

do {
  実行するプログラム
} while (繰り返す条件);

?>

実際に do while 制御文を使用してプログラムを書くと、以下のようになります。

<?php

$count = 1;

do {
  echo "繰り返しのテスト{$count}。<br />\n";
  $count++;
} while ($count <= 10);

?>

while 制御文の時とは異なり、繰り返す条件を検証する前に一度メッセージが表示されることに注目してください。

このプログラムでも、このページのはじめで紹介した処理と同じ結果を得る事ができます。

for制御文

繰り返し処理を行うもう一つの方法に for 制御文があります。while と同様に繰り返し処理を行うことができますが、プログラムの書き方が違います。具体的には、以下のようなプログラムで繰り返し処理を行います。

for (繰り返し準備処理; 繰り返し条件式; 繰り返すたびに行う処理) {
  条件に一致している場合に繰り返し実行するプログラム
}

繰り返し準備処理 は、繰り返しを行う前に一度だけ実行されます。その後、繰り返し条件式 が成立する間 条件に一致している場合に繰り返し実行するプログラム繰り返すたびに行う処理 を実行し続けます。

実際に for 制御文を使用してプログラムを書くと、以下のようになります。

<?php

for ($count = 1; $count <= 10; $count++) {
  echo "繰り返しのテスト{$count}。<br />\n";
}

?>

for を使用すれば、繰り返す条件を一箇所でまとめて指定する事ができます。繰り返す回数があらかじめ判っている場合は for を使用し、繰り返す回数が不明な場合は while を使用するといいでしょう。

endwhileとendforによる制御

条件分岐の際、endif を使用するとコードを読みやすく書き換えることができましたが、whilefor にも同様の書き方が用意されています。具体的には、while による繰り返し処理は

<?php

$count = 1;

while ($count <= 10) :
  echo "繰り返しのテスト{$count}。<br />\n";
  $count++;
endwhile;

?>

このように書くことができます。同様に、for による繰り返し処理は

<?php

for ($count = 1; $count <= 10; $count++) :
  echo "繰り返しのテスト{$count}。<br />\n";
endfor;

?>

このように書くことができます。