こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのforeachを用いたindexの取得方法について説明します。PHPにおいてループ処理のひとつであるforeachはとても便利で、index取得などが扱えるとプログラムの幅が広がります!しかし、似ている処理でも言語によって記述法が異なり、混乱しちゃいますよね。
PHPのforeachでindexを取得する方法について、基本構文だけでなく実際のコードを用いた解説もするので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
PHPの配列について
まずは、PHPの配列について重要事項を確認しましょう。そもそも、「配列」とな何でしょうか。配列とは、値を複数格納できるという特徴があります。例えば、「フルーツ」という変数に様々な値を持たせたいとします。
ここでは、フルーツに「りんご」や「バナナ」、「いちご」という変数をそれぞれ持たせたいときに配列を用いると便利です。フルーツという配列に格納されている番号にアクセスするだけでデータを取り出せます。このように、配列は複数の値を格納することができるため、多量のデータを扱う際などに有効的なメソッドです。
PHPの1次元における配列には大きく分けて2種類あります。「添字配列」と「連想配列」です。配列の機能としての性質は同じで、配列型は変わりませんが、配列で整数のインデックスが自動的に振られる添字配列と、指定した文字列をインデックスとして指定できる連想配列になります。
添字配列
添字配列は、配列にしたいデータを直接格納するだけで、順番通りにindexが振られる配列です。以下の例を見てみましょう。
1 2 3 4 5 6 7 8 |
// 配列$animalを定義 $animal = array('Dog', 'Cat', 'Mouse', 'Horse'); // 配列内のデータの取り出し $animal[0]; // 'Dog'と表示される $animal[1]; // 'Cat'と表示される $animal[2]; // 'Mouse'と表示される $animal[3]; // 'Horse'と表示される |
配列は、arrayを使うことで定義できます。では、上から順に見ていきましょう。
2行目で配列$animalに’Dog’や’Cat’などを格納するように定義しています。ここで、添字配列では格納したい順に書くようにしてください。また、各データに振られるindex番号は0からとなる点に注意しましょう。
5行目以降はデータの取り出しについて書かれています。index番号は0から振られているので、$animal[0]とすると最初に格納されている’Dog’が取り出され、以下順にデータにアクセスできます。
連想配列
連想配列は、自分でデータに紐づくindexを指定できます。実際の例を見てみましょう。
1 2 3 4 5 6 7 8 |
// 連想配列$animalを定義 $animal = array('Dog'=>'犬', 'Cat'=>'猫', 'Mouse'=>'ネズミ', 'Horse'=>'馬'); // 要素の取り出し $animal['Dog']; // '犬'と表示される $animal['Cat']; // '猫'と表示される $animal['Mouse']; // 'ネズミ'と表示される $animal['Horse']; // '馬'と表示される |
連想配列はこのように、array(‘index名’=>’要素’)とすることで定義することができます。2行目で、先ほどの添字配列で使用した要素を、ここではindexとし、和訳を要素として定義しました。
5行目以降で、定義したindexを指定することで、indexに対応した要素を取り出せます。
また、配列には「多次元配列」と呼ばれる配列があります。これは配列の中に配列が格納されているイメージです。種類ごとに異なる性質ごとの配列をまとめたいときなどに用いられる、とても便利な配列です。
foreach構文
foreachは、PHPで用いられるループ構文のひとつです。ループ回数などを準備しなくても、配列に格納されている各要素に対して、アクセスしてくれるとても便利な構文で、プログラムの中で多用されています。
基本構文
1 2 3 |
foreach(配列){ // 処理内容 } |
foreach構文の使い方は、このようになります。foreachの直後に、要素にアクセスしたい配列を記述します。これだけで、配列内の各要素に対して、順に中括弧内{}の処理内容を実行してくれます。
それでは、実際のコード例を見てみましょう。
実践コード例
1 2 3 4 5 6 7 |
// 添字配列$animalを定義 $animal = array('Dog', 'Cat', 'Mouse', 'Horse'); // foreach文を用いて、各要素にアクセス foreach($animal as $doubutu){ // 各要素を$doubutuに格納している print($doubutu); // $doubutuに格納されている要素を表示 } |
添字配列$animalに格納されている各要素にアクセスするプログラムです。5行目からforeach文は始まり、foreachの直後の小括弧内()にて、アクセスした要素を変数$doubutuに格納するようになっています。格納された$doubutuという変数に対して、6行目ではprint関数を用いてその内容を表示するように記述されています。ここでは、配列$animalに格納されている要素が順に表示されます。
では、配列とforeach文それぞれの確認ができたところで、本テーマのforeachでindexを取得する方法について見てみましょう!
foreachでindexを取得する方法
foreach文でindexを取得する方法について、添字配列と連想配列それぞれを対象として説明します。
添字配列のindex取得方法
添字配列$animalについて、indexを取り出すプログラムを説明します。
1 2 3 4 5 6 7 8 9 |
// 添字配列$animalを定義 $animal = array('Dog', 'Cat', 'Mouse', 'Horse'); // foreach文を用いて、indexと要素を取り出す foreach($animal as $number => $doubutu){ echo 'No.' . $number . ' Animal: ' . $doubutu; // 表示 } // "No.0 Animal: Dog", "No.1 Animal: Cat", ...と順に表示される |
添字配列に対しては、5行目のようにforeachのあとの小括弧内()に(配列名 as index名 => 要素)とすることで配列のindexと要素を一緒に取り出すことができます。
ここでは、$animalの配列の各要素を、indexについては$numberで、要素については$doubutuとして取り出している。取り出し、格納した変数$numberと$doubutuについて、6行目に書かれた処理内容を実施しています。
foreach文で各要素にアクセスしているため、順に「No.0 Animal: Dog」、「No.1 Animal: Cat」…と表示されます。
連想配列のindex取得方法
連想配列$animalについて、indexを取り出すプログラムを説明します。
1 2 3 4 5 6 7 8 9 |
// 連想配列$animalを定義 $animal = array('Dog'=>'犬', 'Cat'=>'猫', 'Mouse'=>'ネズミ', 'Horse'=>'馬'); // foreach文を用いて、indexと要素を取り出す foreach($animal as $English => $Japanese){ echo '英語:' . $English . ', 日本語:' . $Japanese; // 表示 } // "英語:Dog, 日本語:犬", "英語:Cat, 日本語:猫", ...と順に表示される |
連想配列についても同様に、(配列名 as index名 => 要素)とすることで配列のindexと要素を一緒に取り出すことができます。
ここでは、$animalの配列の各要素を、indexについては$Englishで、要素については$Japaneseとして取り出している。取り出し、格納した変数$Englishと$Japaneseについて、6行目に書かれた処理内容を実施し、順に「英語:Dog, 日本語:犬」、「英語:Cat, 日本語:猫」…と表示されます。
このようにして、foreach文を用いてindexを取り出すことができます。
まとめ
いかがでしたでしょうか?今回は、PHPのforeachでindexを取得する方法について説明しました。
PHPのループ処理や配列の扱い方について、理解を深めると実用性の幅が広がります。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。