PHP - BASIC - 7. PHPの連想配列 - 5. 連想配列の応用

ここでは連想配列を応用したプログラムを見てみましょう。次の表のようなデータの取り扱いを考えます。

表の中には3件のレコードがあり、1件のレコードには、 nameage という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_array6.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 を指定した先にあるのは連想配列です。たとえば $i0 の場合、つまり $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" が順に出力されるのです。

まとめ

  • 添字配列と連想配列を組み合わせることができる
  • 添字配列と連想配列を組み合わせると表形式のデータを表現できる
  • 要素番号とキーの組み合わせで必要なデータにアクセスする