我有这个API返回:
{"响应&#34 ;: [{" CID":5122405,"标题":"奥斯汀""区域":"艾第地区",& #34;区域":"魁北克"},{" CID":5467453,"标题":"奥斯汀"&# 34;区域":"马尼托巴"}]}
我想打印所有区域,但作为上面的例子,魁北克省的Austin有面积价值(Estrie),但曼尼托巴省的Austin没有。
我的代码是:
for($i = 0; $i < count($json_array['response']); ++$i){
echo $json_array['response'][$i]['area'];
但问题是我收到此错误提示:未定义的索引:区域... 其中区域值不存在(如曼尼托巴省的奥斯汀)。
我如何检查是否存在区域?
答案 0 :(得分:2)
有两种基本方法可以解决这个问题。
最简单的方法是检查变量
的存在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缺少它们。
编辑:拼写
答案 1 :(得分:0)
快速
for($i = 0; $i < count($json_array['response']); ++$i){
if($json_array['response'][$i]['area']){
echo $json_array['response'][$i]['area'];
};
答案 2 :(得分:0)
您可以将json decode用作对象并获取项目列表:
$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
}