- 公開日: 2017年08月18日
phpのwhile文の使い方をマスターしよう!
本日は、phpでの繰り返し処理(ループ処理)を行う際に使う、whileについてわかりやすく解説していきます。
while文について
whileを使用したループ処理は、phpで最も簡単な種類のループです。 while [ (h)wάɪl ]の読み方は、ホワイルまたはワイルと呼ばれるケースが多いと思います。読み方に特に決まりはありませんが、ネイティブな発音だと伝わらないかも知れません。
whileの構文
while (評価式) {
繰り返し行う処理
}
whileの評価式がtrueの間ループ処理を行います。
whileの例文
$i = 1;
while ($i <= 10) {
echo $i++;
}
上記の例だと、ループ処理が1度行われる毎に$iがインクリメントされるので、ループする回数は10回となります。
また、whileは下記の構文でも使用することが可能です。
while (評価式) :
繰り返し行う処理
endwhile;
$i = 1;
while ($i <= 10) :
echo $i++;
endwhile;
上記も同様にループする回数は10回となります。
なお、while文は1行で記述することもできます。
$i = 1;
while ($i <= 10) echo $i++;
上記の記述でもループする回数は10回となります。
do while文
do{
繰り返し行う処理
} while (評価式);
もしくは
do
繰り返し行う処理
while (評価式);
とすることで、while文と同様の処理を行うことも可能です。
while文の使い方
whileは、配列や連想配列等と組み合わせて使用する場合があります。その場合は下記のようにするとよいでしょう。
$count = count($arr);
$i = 0;
while($i < $count) {
echo $arr[$i];
++$i;
}
または、下記のように記述することもできます。
while($val = current($arr)) {
echo $val;
next($arr);
}
currentやnextに慣れないうちはwhileの中の評価式は比較演算子で行ったほうがわかりやすいかと思います。
危険!!無限ループ
永遠に繰り返し処理が終了しないように書かれたループのことを無限ループと呼びます。
例えば、下記のように記述すると無限ループとなります。
$i = 0;
while (1) {
echo $i++;
}
評価式が永遠にfalseにならないため、繰り返し処理が終わることはありません。
下記のように比較演算を行った結果でも無限ループが発生します。
$i = 0;
while ($i < 0) {
echo $i++;
}
このように評価式の記述を間違えてしまうと無限ループが発生してしまうので注意しましょう。 無限ループが発生すると、CPUを使い切ったりメモリを食いつぶしてしまう可能性があります。
forとの違い
forとwhileとの明確な使い分けはありませんが、基本的には
whileを使用するケース
- 繰り返し処理を行う回数が定まっていない場合
- 特定の条件の場合のみ、繰り返し処理を修了させたい場合
forを使用するケース
- 繰り返し処理を行う回数が定まっている場合
\Webサイト担当者としてのスキルが身に付く/
まとめ
いかがだったでしょうか、今回はphpのwhileについて解説しました。 whileにはいろいろな記述方法があるため、どの記述が一番可動性が高いかという点で使い分けを行うとよいでしょう。
- この記事を書いた人
- ベンジャミン吉澤