キーで値にアクセス
CoddyのPHPジャーニー「基礎」セクションの一部。レッスン 42/71。
連想配列とは何か理解できたので、次はそこから値を取得する方法を学びましょう。インデックス配列が数値の位置を使うのと同じように、連想配列は角括弧内でkeysを使います。
<?php
$person = [
"name" => "Alice",
"age" => 25,
"city" => "Paris"
];
echo $person["name"]; // Alice
echo $person["age"]; // 25
?>構文は $array["key"] です。キーを文字列として角括弧内に置くと、PHP は対応する値を返します。名前がインデックス 0 にあることを覚えておくよりも、はるかに読みやすくなります。
取得した値を変数に格納して、後で使用することもできます。
<?php
$product = [
"title" => "Laptop",
"price" => 999
];
$itemName = $product["title"];
echo $itemName; // Laptop
?>キーは、大文字と小文字の違いも含めて完全に一致していなければなりません。"name"の代わりに"Name"を使用すると、PHPではこれらを異なるキーとして扱うため、エラーが発生します。
データは、PHP 配列リテラルではなく、JSON 文字列として届くことがあります。JSON(JavaScript Object Notation)は、構造化データを表現するための一般的なテキスト形式です。例:
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';PHPに組み込まれている json_decode() 関数は、JSON文字列をPHPの値に変換します。連想配列を取得するには、2番目の引数として true を渡します:
<?php
$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';
$book = json_decode($json, true);
echo $book["title"]; // Dune
echo $book["author"]; // Frank Herbert
echo $book["year"]; // 1965
?>json_decode($json, true)を呼び出した後、結果は通常の連想配列になり、他の連想配列とまったく同じ方法、つまり$array["key"]を使用してその値にアクセスできます。
チャレンジ
簡単本の情報を表す JSON オブジェクトを含む入力行を読み取ります(例: {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925})。
次に、さらに 2 つの入力を読み取ります。
- アクセスする最初のキーを表す文字列
key1 - アクセスする 2 番目のキーを表す文字列
key2
JSON 文字列を連想配列に変換するには、組み込みの json_decode() 関数を使用し、2 番目の引数として true を指定します。
$array = json_decode($jsonString, true);
2 番目の引数 true により、PHP はオブジェクトではなく連想配列を返します。デコードが完了したら、連想配列と同じようにキーで値にアクセスできます。例: $array["title"]。
JSON 入力から連想配列を作成し、次の処理を行います。
key1に関連付けられた値にアクセスして出力するkey2に関連付けられた値を$infoという名前の変数に格納する$infoに格納された値を出力する
各結果を別々の行に出力します。
例:
入力が {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}、title、author の場合、出力は次のようになります。
The Great Gatsby
F. Scott Fitzgerald入力が {"name": "Laptop", "brand": "TechCo", "price": 999}、brand、price の場合、出力は次のようになります。
TechCo
999自分で試してみよう
<?php
// JSON入力を読み取る
$jsonInput = trim(fgets(STDIN));
// 2つのキーを読み取る
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// TODO: 以下にコードを書いてください
// 1. json_decodeを使用してJSON入力から連想配列を作成する
// 2. $key1に関連付けられた値にアクセスして出力する
// 3. $key2に関連付けられた値を$infoという変数に格納する
// 4. $infoに格納された値を出力する
?>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: PHPオンラインコンパイラ