【PHP】「while()」による繰り返し処理
PHPで繰り返し処理を行う構文は幾つかあり、while 文もそんな繰り返し処理を行うことができます。
今回はこの while で繰り返し処理を行う方法をメモしておきます。
「while()」文とは?
「while()」文は 「for()」 や「foreach()」 のように同じ処理を繰り返し実行したい時に使用する構文です。記述方法が if() と似ているので、「if()」文が書ける人ならばすぐに使いこなすことができると思います。それでは早速サンプルコードを書いてみましょう。
「while()」文の書き方
while(条件式){繰り返す処理} というシンプルな構文で繰り返しが可能となります。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php /*while(条件式){ 繰り返し実行する処理; } */ $num = 0; while($num < 10){ echo "カウントアップ:".$num."<br>"; $num++; } ?> |
実行結果は次の通りになります。
|
1 2 3 4 5 6 7 8 9 10 |
カウントアップ:0 カウントアップ:1 カウントアップ:2 カウントアップ:3 カウントアップ:4 カウントアップ:5 カウントアップ:6 カウントアップ:7 カウントアップ:8 カウントアップ:9 |
「カウントアップ:」という文字列に、連結子で「$num」に格納されている数値をくっつけて出力しています。その処理後、「$num」を 1 増加させます。ちなみに「$(変数)++」という書き方は、+1しなさいという意味です。
「while()」文は()内に記述された条件式が満たされるまで(trueならば)処理を繰り返します。処理か一回繰り返されることで、「$num」 の数値が上がっていき、条件式である「$num < 10」、今回で言うと$num が「10」になった瞬間に処理が中断したのです。
「while」 文は無限ループに用注意
繰り返し処理を学ぶと必ずと言っていい程注意喚起を受けるのが「無限ループ」です。上のサンプルで言うと最後の「$num++」の記述をうっかり忘れちゃうと、何回繰り返し処理が実行されても「$num = 0」の為、「$num が 10 になるまで繰り返す」という条件を満たすことができず、無限ループに陥ります。
for 文は「変数の初期化、条件式、そして繰り返し後の処理」を一番最初に記述するため、無限ループには陥りにくいのですが、「while() 」文は自分で繰り返し後の処理を付け加える必要があるため、うっかり無限ループに陥りやすいと言えるでしょう。
「while()」文で配列の要素を全て取り出す
本来なら「foreach()」が得意とする要素を全て取り出す作業ですが「while()」の見識を深める為にも一応サンプルを書いてみましょう。
要素内を全て取り出すという作業は、逆に言えば何回ループさせればいいか分からない時に使用できるテクニックとも言えますね。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $array = ["red","blue","yellow","green","gold","silver"]; $num = 0; while(!empty($array[$num])){ echo $array[$num]."<br>"; $num++; //実行結果 red blue yellow green gold silver } ?> |
条件式に「!empty」という関数が入っています。「empty()」関数は変数の中身が空かどうかを調べるための関数で、変数内が空ならば trueを返す関数です。今回は「!empty()」という書き方を条件式にいれているので、「変数が空じゃなければ繰り返す」という条件になり、配列内の要素がなくなるまで繰り返し処理が行われます。
終わりに
今回は「while()」 を使ってみました。色んな書き方を知れば「while()」 だけでも「foreach()」 のように要素内の全てを取り出すといったことができます。色んな条件の書き方を学んでいき、様々な操作ができるようになりたいですね。あ!無限ループだけには本当気を付けましょう(自分にむけて)!
今回はここまでです。お疲れ様でした(・ω・)ノシ