二维关联数组
本课属于 Coddy PHP 学习旅程的“逻辑与流程”单元。第 31 课,共 68 课。
虽然你一直在使用数字索引处理二维数组,但也可以在主层级和嵌套数组中使用关联数组,创建结构更清晰的数据。这种方法使用字符串键而不是数字,让数据更具描述性,也更容易理解。
下面介绍如何创建一个二维关联数组,其中每个元素都有含义明确的字符串键:
<?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"]
];
?>这种结构在组织复杂数据时非常强大,例如用户资料、产品目录,或者任何需要为每个项目存储多个相关属性的场景。字符串键能让代码更易于理解,也比记住数字位置更容易维护。
挑战
简单你会收到一个输入:一个以 JSON 格式表示产品库存的二维关联数组。每个产品都以唯一的产品 ID 作为键,值是一个包含产品 "name" 和 "price" 的关联数组。读取输入,将 JSON 字符串转换为二维关联数组,遍历所有产品,并按以下格式打印每个产品的信息:ID: [product_id] - Name: [name] - Price: $[price]
每个产品都应单独占一行打印。
输入格式:一行内容,其中包含一个表示产品库存的 JSON 对象(示例:{"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]
亲手试试
<?php
// 读取 JSON 输入
$input = fgets(STDIN);
// 将 JSON 转换为关联数组
$inventory = (array)json_decode($input, true);
// TODO:在下方编写代码,遍历 inventory 并打印每个商品
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: PHP 在线编译器