📜  如果不存在 key json php (1)

📅  最后修改于: 2023-12-03 14:53:22.128000             🧑  作者: Mango

如果不存在 key json php

当在处理 JSON 数据时,可能会遇到不存在某个 key 的情况。在 PHP 中,有多种方式可以判断一个 JSON 对象是否存在某个 key。

使用 array_key_exists() 函数

可以使用 PHP 内置的 array_key_exists() 函数来判断一个关联数组是否存在某个 key。例如:

$json = '{"name": "张三", "age": 18}';
$data = json_decode($json, true);

if (array_key_exists('name', $data)) {
    echo "姓名为:" . $data['name'];
}

if (array_key_exists('gender', $data)) {
    echo "性别为:" . $data['gender'];
} else {
    echo "性别不存在";
}

输出结果为:

姓名为:张三
性别不存在
使用 isset() 函数

除了 array_key_exists() 函数,PHP 还提供了 isset() 函数来判断一个变量是否存在。对于数组来说,isset() 函数不仅可以判断是否存在某个 key,还可以判断其值是否为空。例如:

$json = '{"name": "张三", "age": null, "gender": ""}';
$data = json_decode($json, true);

if (isset($data['name'])) {
    echo "姓名为:" . $data['name'];
}

if (isset($data['age'])) {
    echo "年龄为:" . $data['age'];
} else {
    echo "年龄不存在";
}

if (isset($data['gender']) && !empty($data['gender'])) {
    echo "性别为:" . $data['gender'];
} else {
    echo "性别不存在或为空";
}

输出结果为:

姓名为:张三
年龄不存在
性别不存在或为空
使用 array_key_exists() 和 isset() 的区别

虽然 array_key_exists()isset() 都可以用来判断一个 JSON 对象是否存在某个 key,但两者有以下几点区别:

  1. 返回值:array_key_exists() 的返回值为布尔值,而 isset() 的返回值为布尔值或 null。

  2. 判断方式:array_key_exists() 只判断键是否存在,而 isset() 除了判断键是否存在,还判断值是否为空(null、false、空数组、空字符串)。

综上所述,在使用时需要根据实际需求选择合适的函数来判断 JSON 对象中是否存在某个 key。