フリー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
制御文を使用してプログラムを書くと、以下のようになります。
<?php
$count = 1;
while ($count <= 10) {
echo "繰り返しのテスト{$count}。<br />\n";
$count++;
}
?>
このプログラムの場合、繰り返す条件は $count <= 10
です。つまり、$count
が 10
以下ならば処理が繰り返し実行されます。繰り返す処理の内容は echo "繰り返しのテスト{$count}。<br />\n";
と $count++;
です。つまり、画面に 繰り返しのテスト。
と表示してから $count
に 1
を加えます。
こうすれば $count
が 10
以下の間、画面に文字列を表示してから $count
の値が 1
ずつ増えていきます。そして $count
の値が 10
以上になった時点で繰り返し処理は終了します。つまり、このページのはじめで紹介した処理と同じ結果を得る事ができます。
繰り返し処理を行う際、終わらないプログラムを書いてしまわないように注意してください。例えば上のプログラムで
$count++;
の行を忘れてしまうと 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
制御文があります。while
と同様に繰り返し処理を行うことができますが、プログラムの書き方が違います。具体的には、以下のようなプログラムで繰り返し処理を行います。
for (繰り返し準備処理; 繰り返し条件式; 繰り返すたびに行う処理) {
条件に一致している場合に繰り返し実行するプログラム
}
繰り返し準備処理
は、繰り返しを行う前に一度だけ実行されます。その後、繰り返し条件式
が成立する間 条件に一致している場合に繰り返し実行するプログラム
と 繰り返すたびに行う処理
を実行し続けます。
実際に for
制御文を使用してプログラムを書くと、以下のようになります。
<?php
for ($count = 1; $count <= 10; $count++) {
echo "繰り返しのテスト{$count}。<br />\n";
}
?>
for
を使用すれば、繰り返す条件を一箇所でまとめて指定する事ができます。繰り返す回数があらかじめ判っている場合は for
を使用し、繰り返す回数が不明な場合は while
を使用するといいでしょう。
条件分岐の際、endif を使用するとコードを読みやすく書き換えることができましたが、while
と for
にも同様の書き方が用意されています。具体的には、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;
?>
このように書くことができます。