Menu
CoddyTech

按键访问值

本课属于 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
?>

键必须完全匹配,包括大小写。使用 "Name" 而不是 "name" 会导致错误,因为 PHP 会将它们视为不同的键。

有时,数据会以 JSON 字符串 的形式传入,而不是 PHP 数组字面量。JSON(JavaScript Object Notation)是一种常见的文本格式,用于表示结构化数据。例如:

$json = '{"title": "Dune", "author": "Frank Herbert", "year": 1965}';

PHP 内置的 json_decode() 函数会将 JSON 字符串转换为 PHP 值。要获取关联数组,请将 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})。

然后再读取两个输入:

  • 一个字符串 key1,表示要访问的第一个键
  • 一个字符串 key2,表示要访问的第二个键

要将 JSON 字符串转换为关联数组,请使用内置的 json_decode() 函数,并将 true 作为第二个参数:
$array = json_decode($jsonString, true);
第二个参数 true 会告诉 PHP 返回关联数组,而不是对象。解码后,你可以像访问任何关联数组一样通过键访问值,例如 $array["title"]。

根据 JSON 输入创建一个关联数组,然后:

  1. 访问并输出与 key1 关联的值
  2. 将与 key2 关联的值存储在名为 $info 的变量中
  3. 输出存储在 $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));

// 读取两个键
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));

// TODO: 在下方编写代码
// 1. 使用 json_decode 将 JSON 输入转换为关联数组
// 2. 获取并打印与 $key1 关联的值
// 3. 将与 $key2 关联的值存入名为 $info 的变量
// 4. 打印 $info 中存储的值

?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: PHP 在线编译器