PHP - BASIC - 7. PHPの連想配列 - 5. 連想配列の応用
ここでは連想配列を応用したプログラムを見てみましょう。次の表のようなデータの取り扱いを考えます。
表の中には3件のレコードがあり、1件のレコードには、 name
と age
という2つの項目があります。このようなデータは通常の配列(添字配列)と連想配列を組み合わせることで表現できます。次のプログラム( a_array6.php
)を作成してみましょう。
<?php
$students = [
["name" => "Andy", "age" => 20],
["name" => "Betty", "age" => 19],
["name" => "Carol", "age" => 21]
];
for ($i = 0; $i < 3; $i++) {
if ($students[$i]["age"] >= 20) {
echo "Hello ";
echo $students[$i]["name"] . PHP_EOL;
}
}
まずはプログラムを実行してみましょう。
$ php a_array2.php
Hello Andy
Hello Carol
実行結果から "age"
キーの値が 20
以上のレコードだけが出力されているのがわかります。
それではプログラムの詳細を見てみましょう。
$students = [
["name" => "Andy", "age" => 20],
["name" => "Betty", "age" => 19],
["name" => "Carol", "age" => 21]
];
ここでは配列 $students
を宣言しています。よく見ると変数 $students
は配列(添字配列)でありながら、配列の各要素は別の配列(ここでは連想配列)として定義されているのがわかります。このような配列は 2次元配列
と呼ぶこともあります。
プログラムの解説に戻りましょう。配列 $students
を宣言した後 for
文を使って3件のデータを繰り返し処理します。
for ($i = 0; $i < 3; $i++) {
if ($students[$i]["age"] >= 20) {
echo "Hello ";
echo $students[$i]["name"] . PHP_EOL;
}
}
繰り返しの中では $students[$i]
にアクセスしていますが、要素番号 $i
を指定した先にあるのは連想配列です。たとえば $i
が 0
の場合、つまり $students[0]
と指定すると次の連想配列にアクセスできます。
["name" => "Andy", "age" => 20]
同様に $students[1]
の場合は、次の連想配列にアクセスできます。
["name" => "Betty", "age" => 19]
さらに $students[2]
の場合は、次の連想配列にアクセスできます。
["name" => "Carol", "age" => 21]
for
文の処理ブロック {}
の中で if
文の条件式に $students[$i]["age"] >= 20
と記述することで、 $students[$i]
連想配列の "age"
キーの値が 20
以上か確認しています。 "Andy"
と "Carol"
のレコードはこの条件式を満たします。その後 echo $students[$i]["name"] . PHP_EOL;
と記述することで、2人の名前 "Andy"
、 "Carol"
が順に出力されるのです。
まとめ
- 添字配列と連想配列を組み合わせることができる
- 添字配列と連想配列を組み合わせると表形式のデータを表現できる
- 要素番号とキーの組み合わせで必要なデータにアクセスする