2次元連想配列
CoddyのPHPジャーニー「論理とフロー」セクションの一部。レッスン 31/68。
数値インデックスを使って 2D array を扱ってきましたが、メインレベルとネストされた array の両方で associative array を使うことで、より構造化されたデータを作成することもできます。この方法では、数値の代わりに文字列キーを使うため、データがよりわかりやすくなり、理解しやすくなります。
各要素に意味のある文字列キーを持つ2次元連想配列を作成する方法は次のとおりです:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
],
"charlie" => [
"name" => "Charlie Brown",
"grade" => 95
]
];
?>メインの配列には数値インデックスを使用し、その内部には連想配列を保持するなど、アプローチを組み合わせることもできます。
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>この構造は、ユーザープロフィール、製品カタログ、または各項目に関連する複数のプロパティを格納する必要があるあらゆる場面など、複雑なデータを整理するうえで非常に強力です。文字列キーを使うことで、数値の位置を覚えるよりもコードが自己文書化され、はるかに保守しやすくなります。
チャレンジ
簡単入力として、JSON形式の製品在庫を表す2次元連想配列を1つ受け取ります。各製品にはキーとして一意の製品IDがあり、その値は製品の"name"と"price"を含む連想配列です。入力を読み取り、JSON文字列を2次元連想配列に変換し、すべての製品を反復処理して、各製品の情報を次の形式で出力してください:ID: [product_id] - Name: [name] - Price: $[price]
各製品は別々の行に出力してください。
入力形式:製品在庫を表すJSONオブジェクトを含む1行(例:{"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
期待される出力:各製品を、次の形式で別々の行に出力します:ID: [product_id] - Name: [name] - Price: $[price]
自分で試してみよう
<?php
// JSON入力を読み取る
$input = fgets(STDIN);
// JSONを連想配列に変換する
$inventory = (array)json_decode($input, true);
// TODO: 以下にコードを書いて、インベントリを反復処理し各製品を出力してください
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ