如何检查 JSON 索引(键)是否存在?

min*_*ton 1 php indexing json key undefined

我有这个 API 返回这个:

{"response": [{"cid":5122405,"title":"奥斯汀","area":"Estrie","re​​gion":"魁北克"},{"cid":5467453,"title":"奥斯汀","re​​gion":"曼尼托巴"}]}

我想打印所有区域,但作为上面的示例,魁北克省的奥斯汀有面积值 (Estrie),但曼尼托巴省的奥斯汀没有。

我的代码是:

for($i = 0; $i < count($json_array['response']); ++$i){ 
    echo $json_array['response'][$i]['area'];
Run Code Online (Sandbox Code Playgroud)

但问题是我收到此错误 注意:未定义的索引:区域...其中区域值不存在(例如马尼托巴省的奥斯汀)。

如何检查区域是否存在?

Ben*_*owe 5

有两种基本方法可以解决这个问题。

最简单的是检查变量是否存在

echo array_key_exists('area', $json_array['response'][$i]) ? $json_array['response'][$i]['area'] : null;
Run Code Online (Sandbox Code Playgroud)

另一种方法是标准化 API 的响应,以便area密钥始终存在

function standardizeApi($values) 
{
    foreach ($values['response'] as $i => $details) {
        if (!array_key_exists('area', $details)) {
            $values['response'][$i]['area'] = null; // default value
        }
    }
    return $values;
}

$json_array = standardizeApi($json_array);
// loop though as normal
Run Code Online (Sandbox Code Playgroud)

如果您有多个密钥需要检查,则第二种方法更好。即使 api 缺少值,您也可以确保数组包含值。

编辑:拼写