按键访问值
本课属于 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"]。
挑战
简单读取一行输入,其中包含一个表示书籍信息的 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 输入创建一个关联数组,然后:
- 访问并输出与
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));
// 读取两个键
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// TODO: 在下方编写代码
// 1. 使用 json_decode 将 JSON 输入转换为关联数组
// 2. 获取并打印与 $key1 关联的值
// 3. 将与 $key2 关联的值存入名为 $info 的变量
// 4. 打印 $info 中存储的值
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器