Menu
Coddy logo textTech

Accessing Values by Key

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 42/71。

連想配列が何であるかを理解したところで、それらから値を取得する方法を学びましょう。インデックス配列が数値の位置を使用するのと同様に、連想配列は角括弧の中でキーを使用します。

<?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
?>

キーは、大文字と小文字を含めて正確に一致させる必要があります。PHPはこれらを異なるキーとして扱うため、"name" の代わりに "Name" を使用するとエラーが発生します。

時には、データが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"] を使ってその値にアクセスできます。

challenge icon

チャレンジ

簡単

本の情報を表すJSONオブジェクト(例:{"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925})を含む1行の入力を読み取ります。

次に、さらに2つの入力を読み取ります:

  • アクセスする最初のキーを表す文字列 key1
  • アクセスする2番目のキーを表す文字列 key2

JSON文字列を連想配列に変換するには、第2引数に true を指定して組み込みの json_decode() 関数を使用します:
$array = json_decode($jsonString, true);
第2引数の true は、PHPにオブジェクトではなく連想配列を返すように指示します。デコードされると、$array["title"] のように、通常の連想配列と同じようにキーで値にアクセスできます。

JSON入力から連想配列を作成し、以下の操作を行ってください:

  1. key1 に関連付けられた値にアクセスして表示する
  2. key2 に関連付けられた値を $info という名前の変数に格納する
  3. $info に格納されている値を表示する

各結果を個別の行に表示してください。

例:

入力が {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald", "year": 1925}titleauthor の場合、出力は以下のようになります:

The Great Gatsby
F. Scott Fitzgerald

入力が {"name": "Laptop", "brand": "TechCo", "price": 999}brandprice の場合、出力は以下のようになります:

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 に格納された値を表示する

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン