こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのforeachを用いたkeyの取得方法について説明します。PHPにおいてループ処理のひとつであるforeachはとても便利で、連想配列のkey取得などが扱えるとプログラムの幅が広がります!しかし、連想配列の扱い方や、似ている処理でも言語によって記述法が異なり、混乱しちゃいますよね。
PHPのforeachでkeyを取得する方法について、基本構文だけでなく実際のコードを用いた解説もするので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
PHPのkeyとは?
そもそも、PHPのkeyとは何のことか、説明できますか?
keyとは、PHPで配列を扱う際に登場する概念です。PHPには大きく分けて2種類の配列があります。1つ目が添字配列です。
添字配列は、いわゆる一般的な配列で、以下のようなものをさします。
1 2 |
// 添字配列 $array = ["犬", "猫", "ネズミ"]; |
このように、格納したいデータだけを記述した配列を指します。添字配列では、この場合は一番左にある「犬」から順に0,1,2,…と番号が振られます。この添字をインデックス(index)と呼びます。このインデックスを以下のように指定することで、所望データを取得することができます。
1 |
print($array[1]); // 「猫」と表示される |
2つ目の配列は連想配列です。連想配列は、添字配列の自動的に振られるインデックスの代わりに、自ら名前を付けることができます。これを、keyと呼んでいます。
では、連想配列でkeyを指定しているコードを見てみましょう。
1 2 |
// 連想配列 $array_1 = ["Dog" => "犬", "Cat" => "猫", "Mouse" => "ネズミ"]; |
このように、「key => データ”」と書くことで、自らkeyを指定することができます。連想配列内のデータを呼び出したいときは、このkeyを次のように呼び出すことで、データを取得できます。
1 |
print($array_1["Mouse"]); // 「ネズミ」と表示される |
配列に格納したいデータの種類によって、添字配列と連想配列を使い分けることで、より効率的なプログラムになることでしょう。PHPの配列について詳しく知りたい方は、以下の記事を参考にしてください。
【初心者向け】PHPの配列の使い方を解説!foreach構文
プログラムにおいて、決まった処理を繰り返したいときにループを用いることがありますよね。for文やwhile文などが他の言語でもよく用いられていますが、PHPにはforeach文というループ処理を行う構文が存在します。
foreach文は、配列に格納されたデータ1つずつに対して、繰り返し処理を施したいときに最適な構文です。配列内のデータの数だけ、繰り返し処理を行うため、別に処理条件等書く必要のない、とても便利なメソッドです。
では、foreach構文の書き方について確認しましょう。
基本構文
1 2 3 |
foreach(配列名 as 変数名){ 処理内容 } |
foreach構文は、このように書きます。配列名の後にasを記述し、その直後に配列内の各データを扱う際の変数名を指定します。この変数名を用いて、処理内容に実行内容を書くことで、配列内の各データに対して処理を実行することができます。
では、実際のコード例を見てみましょう。
実践コード例
1 2 3 4 5 |
$animal = ["犬", "猫", "ネズミ"]; foreach($animal as $data){ print($data); } |
配列$animalに対して、foreach文を用いてデータ処理を行っているプログラムです。3行目からforeach文が使われていますね。
ここでは、配列$animal内のデータを変数$dataとして扱い、4行目に書かれたprint関数を用いた表示させる処理を行っています。そのため、「犬」、「猫」、「ネズミ」と順に表示されるようになっています。
このように、foreach文は配列内の各データに対して、簡単にアクセスできるとても便利なメソッドです。foreach文について、もっと詳しく知りたい方は以下の記事を参考にしてください。
【PHP入門】PHPでforeachを使う方法!foreachでkeyを取得する方法
ここまで、PHPのkeyと、foreach文について説明してきました。ここからは、連想配列に対してforeach文を用いて、要素だけでなくkeyも取得する方法について説明します。
PHPのプログラムにおいて、連想配列に格納された要素だけでなく、keyを取得したい場合があります。例えば、顧客データをkeyに設定し、要素にはそれに紐づけられたデータを格納していた配列などを処理したい場合、要素だけを表示させても分かりにくいですよね。そんなときにkeyを取得できていたら、誰のデータを処理しているのか分かり、とても便利です。
では、基本構文から見ていきましょう。
基本構文
1 2 3 |
foreach(配列名 as key名 => 変数名){ 処理内容 } |
foreach文で連想配列のkeyを取得したい場合は、このように書きます。連想配列の書き方と同様、as以降に「key名 => 変数名」とすることで、foreach文の処理内で「key名」と「変数名」をそのままプログラムに使用することができます。
では、実際のコード例を見てみましょう。
実践コード例
1 2 3 4 5 6 7 |
// 連想配列を定義 $animal = ["Dog" => "犬", "Cat" => "猫", "Mouse" => "ネズミ"]; foreach($animal as $Key => $data){ echo "I like a ". $Key. ".<br/>"; echo "私は". $data. "が好きです。<br/>"; } |
連想配列に対して、foreach文を使用しました。上から順に見ていきましょう。
2行目で、連想配列の$animalを定義しています。keyとして英訳、要素に和訳を指定しました。
4行目からforeach文が始まり、連想配列のkeyを変数$Keyとして、要素を変数$dataとして格納して、5,6行目に書かれた処理が実施されています。
今回は、echoを用いて文字列を表示させるように処理内容が書かれていますね。これを実行すると、配列$animalの1つ目のkeyと要素である、「Dog」と「犬」から順に取り出されて処理が実行されます。foreach文によって、各データにアクセスし、実行された結果が以下のようになります。
1 2 3 4 5 6 |
I like a Dog. 私は犬が好きです。 I like a Cat. 私は猫が好きです。 I like a Mouse. 私はネズミが好きです。 |
このように、foreach文を用いることで、要素だけでなく簡単にkeyも取り出せます!
まとめ
いかがでしたでしょうか?今回は、PHPのforeachでkeyを取得する方法について説明しました。
PHPのループ処理や配列の扱い方について、理解を深めると実用性の幅が広がります。ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。