检查键是否存在
本课属于 Coddy PHP 学习旅程的“基础知识”单元。第 45 课,共 71 课。
处理关联数组时,你通常需要先检查特定键是否存在,再尝试访问它的值。尝试访问不存在的键可能会导致错误,因此 PHP 提供了 array_key_exists() 函数,让你先安全地进行检查。
<?php
$person = [
"name" => "Alice",
"age" => 25
];
if (array_key_exists("name", $person)) {
echo "Name exists!";
}
if (array_key_exists("city", $person)) {
echo "City exists!";
} else {
echo "City not found";
}
?>这个函数接受两个参数:你要查找的键,以及要在其中搜索的数组。如果键存在,它会返回 true,否则返回 false。这使它非常适合用于条件语句。
处理可能不完整的数据时,这项检查尤其有用,例如用户输入或来自外部来源的数据,因为你无法保证所有预期的键都存在。
挑战
简单读取一行输入,其中包含一个表示用户数据的 JSON 对象(例如,{"username": "john_doe", "email": "john@example.com", "age": 28})。
然后再读取两个输入:
- 一个字符串
key1,要检查的第一个键 - 一个字符串
key2,要检查的第二个键
根据 JSON 输入创建一个关联数组,然后:
- 检查数组中是否存在
key1。如果存在,输出与它关联的值。如果不存在,输出Key not found。 - 检查数组中是否存在
key2。如果存在,输出与它关联的值。如果不存在,输出Key not found。
将每个结果分别输出到单独的一行。
示例:
如果输入是 {"username": "john_doe", "email": "john@example.com", "age": 28}、username 和 phone,输出应为:
john_doe
Key not found如果输入是 {"title": "Manager", "department": "Sales"}、salary 和 department,输出应为:
Key not found
Sales亲手试试
<?php
// 读取 JSON 输入
$jsonInput = trim(fgets(STDIN));
$key1 = trim(fgets(STDIN));
$key2 = trim(fgets(STDIN));
// 将 JSON 转换为关联数组
$userData = (array)json_decode($jsonInput, true);
// TODO:在下方编写你的代码
// 检查 key1 是否存在,并输出对应的值或说明中指定的确切文本
// 检查 key2 是否存在,并输出对应的值或说明中指定的确切文本
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器