2次元連想配列
CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 31/68。
これまで数値インデックスを使用した2次元配列を扱ってきましたが、メインレベルとネストされた配列の両方で連想配列を使用することで、より構造化されたデータを作成することもできます。このアプローチでは、数値の代わりに文字列キーを使用するため、データがより記述的になり、理解しやすくなります。
各要素が意味のある文字列キーを持つ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"]
];
?>この構造は、ユーザープロファイルや製品カタログ、あるいは各アイテムに対して複数の関連するプロパティを保存する必要があるあらゆるシナリオなど、複雑なデータを整理するのに非常に強力です。文字列のキーを使用することで、コードが自己文書化され、数値の位置を覚えるよりもメンテナンスがはるかに容易になります。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
チャレンジ
簡単1つの入力を受け取ります。それはJSON形式の製品在庫を表す2次元連想配列です。各製品は一意の製品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] の形式で個別の行に出力します。
チートシート
メインレベルとネストされた配列の両方で文字列キーを使用して、2次元連想配列を作成できます。
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
]
];
?>また、メインの配列には数値インデックスを使用し、その中に連想配列を入れるというように、アプローチを組み合わせることもできます。
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>文字列キーを使用すると、データが自己文書化され、数値による位置指定よりもメンテナンスが容易になります。
自分で試してみよう
<?php
// JSON入力を読み込む
$input = fgets(STDIN);
// JSONを連想配列に変換する
$inventory = (array)json_decode($input, true);
// TODO: 以下にコードを記述して、在庫をループ処理し、各製品を出力してください
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。