Menu
CoddyTech

检查键是否存在

本课属于 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。这使它非常适合用于条件语句。

处理可能不完整的数据时,这项检查尤其有用,例如用户输入或来自外部来源的数据,因为你无法保证所有预期的键都存在。

challenge icon

挑战

简单

读取一行输入,其中包含一个表示用户数据的 JSON 对象(例如,{"username": "john_doe", "email": "john@example.com", "age": 28})。

然后再读取两个输入:

  • 一个字符串 key1,要检查的第一个键
  • 一个字符串 key2,要检查的第二个键

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

  1. 检查数组中是否存在 key1。如果存在,输出与它关联的值。如果不存在,输出 Key not found。
  2. 检查数组中是否存在 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 是否存在,并输出对应的值或说明中指定的确切文本

?>
quiz icon自我测试

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

基础知识中的所有课

自己练习: PHP 在线编译器