こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPの配列をwhileを用いてループさせる方法について説明します。ループは、同じ処理を繰り返し、対象の値等を変化させて実施する、制御構文の1つです。PHPのループには、while以外にもいくつかあり、その違いや使い方に迷っちゃいますよね。
PHPの配列をwhileを用いてループさせる方法だけでなく、繰り返し処理に用いられる他の制御構文との違いについても解説するので、PHPの学習を始めた方や、プログラムを書く予定の人はぜひ読んでみてください!
目次
PHPの配列について
そもそも、配列とは何でしょうか。プログラムを書くにあたって、値や文字列を保持するのには、変数が用いられますよね。しかし、基本的には1つの変数に対して1つのデータしか割り当てることができません。一方で、配列は複数のデータを保持し、扱えるようになっています。
PHPの配列作成には、arrayを使います。配列はデータを(キー:値)をペアとして保持しており、このセットを要素と呼びます。また、PHPの配列には大きく分けて、”添字配列”と”連想配列”があります。ここではそれぞれの配列について、簡単に書き方や概念について解説します。
添字配列
1 |
$animal = array('dog', 'cat', 'mouse'); |
まずは添字配列です。字だけ見ると難しそうですが、最もシンプルな配列です。arrayの括弧内で宣言した’dog’、’cat’、’mouse’が、$animalという配列に代入されます。この時に、左から順に0, 1, 2, …と番号が振られます。
そのため、配列の中身それぞれを取り出したいときは、次のように記述します。
1 2 3 |
echo $animal[0]; // 'dog'が表示される echo $animal[1]; // 'cat'が表示される echo $animal[2]; // 'mouse'が表示される |
このように、配列名[添字番号]と書くことで、所望の値を抽出することができます。注意点として、番号は0から振られるので気を付けてくださいね!
連想配列
自動的に番号が振られる添字配列とは異なり、連想配列はキーを指定して配列を定義します。実際の例を見てみましょう。
1 |
$animal = array('dog'=>'3匹', 'cat'=>'5匹', 'mouse'=>'10匹'); |
このように、キーと値をセットで指定することができます。一つのデータから関連データを連想させられるということで、このように呼んでいます。添字配列では、キーに振られた番号を代入して呼び出していましたが、連想配列は自分で設定したキーを代入することで値を取り出します。
1 2 3 |
echo $animal[dog]; // '3匹'が表示される echo $animal[cat]; // '5匹'が表示される echo $animal[mouse]; // '10匹'が表示される |
次からは、実際に配列から値を順に取り出したりするために、whileを用いたループについて説明します。なお、説明にあたっては、順番に番号を呼び出したいため、添字配列にて解説します。
whileを用いたループ
配列について、簡単に理解できたところで、本記事の目的であるwhileを用いたループについて見てみましょう。
基本構文
1 2 3 |
while (条件) { // 実行内容 } |
PHPのwhile文の基本構文はこのようになります。whileの後の小括弧()内で条件文を記述し、この条件を満たしている時だけ、中括弧{}内の内容が実行されるようになっています。そのため、while文の特徴として、配列の全要素にアクセスすることもできますが、限定的に配列の値にアクセスしたいときなどに向いている制御構文ということが挙げられます。
では、実際のwhileを用いたプログラム例を確認してみましょう。
実践プログラム例
1 2 3 4 5 6 7 8 |
$animal = array('dog', 'cat, 'mouse'); // 配列$animalを定義 $number = 0; // 変数numberを0で初期化 while ($number <= 2) { // numberが2になるまでループするように定義 echo $animal[number]; // numberに0,1,2と順に入り、キーに対応する値を表示 $number++; // numberを+1する } |
1行目で、添字配列の$animalを定義しています。3行目で値を初期化し、5行目のwhileの小括弧()内で、変数numberの値によって制御するように構文を作成しています。6行目ではnumberに応じて、’dog’、’cat’、’mouse’と順に表示されるようになっています。while文の処理の最後になる7行目にnumberの値を+1する表記($変数++で値が1増える)があり、numberの値も0,1,2と順に増えるようになっています。
このように、whileを用いたループ文によって、配列の値が簡単に取り出せることが分かりました。次は、whileと他の制御文の違いについて解説します。
whileと他の制御構文の違い
PHPの繰り返し制御構文には、whileの他にforとforeachを用いた処理があります。それぞれの簡単な使い方とwhileとの違いという点を中心に説明します。
forとの違い
1 2 3 4 5 6 7 8 9 |
for (初期値; 条件式; 増減式){ // 実行処理 } $animal = ['dog', 'cat', 'mouse']; // 配列定義 for ($number = 0; $number < 100; $number++){ echo $animal[number]; } |
for文は、「カウンタの初期値・ループ処理を実施する条件・増減式」を記述します。whileと同じようなループ制御構文を作ることができます。ループにあたって必要な処理がforの直後の小括弧()内にまとまっていることから、見やすくなりますよね。
whileよりforの方が、ループする回数が分かっているときに向いているでしょう。一方で、回数が分からなかったり、回数によって特定の条件を設けるときは、whileの方が利便性が高いです。
foreachとの違い
1 2 3 4 5 6 7 8 9 |
foreach (配列) { // 実行処理 } $animal = ['dog', 'cat', 'mouse']; // 配列定義 foreach ($animal as $species){ echo $speacies; // 'dog'→'cat'→'mouse'と順に表示される } |
foreachは、forやwhileと違って、ループ回数を指定するための変数が必要ありません。配列の中身をキーの値を順に取り出してくれます。ここでは、配列$animalの中身を順に変数$speciesに格納していきます。PHPの配列が、順序付きの配列となるので、順番も担保されているとても便利な機能です。連想配列にも使えるので、制御構文の中では1番使用頻度が高いかもしれません。
foreachはとても便利ですが、配列やオブジェクト以外のデータ型のときに、変数指定などでエラーが出やすいので、注意してください。以下でforeachについて詳しく説明されているので、参考にしてください。
まとめ
いかがでしたでしょうか?今回は、PHPの配列をwhileを用いてループして処理する方法について説明しました。
他の制御構文との違いを理解し、使い分けることでプログラムの効率性が上昇します。ぜひ、PHPの繰り返し処理について理解し、Webサービス作成やシステム構築に活かしてください。