如何检查 JSON 索引(键)是否存在?
How to check if JSON index (key) exists?
我有这个 API 那 returns 这个:
{"response":
[{"cid":5122405,"title":"Austin","area":"Estrie","region":"Quebec"},{"cid":5467453,"title":"Austin","region":"Manitoba"}]}
我想打印所有地区,但如上例,魁北克的奥斯汀有面积值(Estrie),但曼尼托巴的奥斯汀没有。
我的代码是:
for($i = 0; $i < count($json_array['response']); ++$i){
echo $json_array['response'][$i]['area'];
但问题是我得到这个错误注意:未定义的索引:区域在... 区域值不存在(如曼尼托巴的奥斯汀)。
如何检查 area 是否存在?
如果
快
for($i = 0; $i < count($json_array['response']); ++$i){
if($json_array['response'][$i]['area']){
echo $json_array['response'][$i]['area'];
};
有两种基本方法可以解决这个问题。
最简单的就是检查变量是否存在
echo array_key_exists('area', $json_array['response'][$i]) ? $json_array['response'][$i]['area'] : null;
另一种方法是标准化 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
如果要检查的密钥不止一个,第二种方法更好。您可以确保数组包含值,即使 api 缺少它们。
编辑:拼写
您可以使用 json 解码作为对象并获取项目列表:
$stringJson = '{"response":[{"cid":5122405,"title":"Austin","area":"Estrie","region":"Quebec"},{"cid":5467453,"title":"Austin","region":"Manitoba"}]}';
$jsonObj = json_decode($stringJson);
foreach ($jsonObj->response as $item) {
echo $item->cid; // 5122405 5467453
}
我有这个 API 那 returns 这个:
{"response": [{"cid":5122405,"title":"Austin","area":"Estrie","region":"Quebec"},{"cid":5467453,"title":"Austin","region":"Manitoba"}]}
我想打印所有地区,但如上例,魁北克的奥斯汀有面积值(Estrie),但曼尼托巴的奥斯汀没有。
我的代码是:
for($i = 0; $i < count($json_array['response']); ++$i){
echo $json_array['response'][$i]['area'];
但问题是我得到这个错误注意:未定义的索引:区域在... 区域值不存在(如曼尼托巴的奥斯汀)。
如何检查 area 是否存在?
如果
快for($i = 0; $i < count($json_array['response']); ++$i){
if($json_array['response'][$i]['area']){
echo $json_array['response'][$i]['area'];
};
有两种基本方法可以解决这个问题。
最简单的就是检查变量是否存在
echo array_key_exists('area', $json_array['response'][$i]) ? $json_array['response'][$i]['area'] : null;
另一种方法是标准化 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
如果要检查的密钥不止一个,第二种方法更好。您可以确保数组包含值,即使 api 缺少它们。
编辑:拼写
您可以使用 json 解码作为对象并获取项目列表:
$stringJson = '{"response":[{"cid":5122405,"title":"Austin","area":"Estrie","region":"Quebec"},{"cid":5467453,"title":"Austin","region":"Manitoba"}]}';
$jsonObj = json_decode($stringJson);
foreach ($jsonObj->response as $item) {
echo $item->cid; // 5122405 5467453
}