当我应用array_key_exists函数时,它不会从JSON返回值

时间:2016-11-15 23:21:03

标签: php json

我正在使用PHP从JSON获取数据,当我使用array_key_exists测试JSON中的密钥以确保它存在时,它不会返回任何内容。以下是图书馆的链接:https://api.edmunds.com/api/vehicle/v2/vins/4T1BK1EB6DU056165?&fmt=json&api_key=zzasv56vxwkx67m9cy6apfmq 当我试图像这样运行时,我什么也得不到:

if(array_key_exists('years[0]->year', $jfo)) {
$mds = $jfo->years[0]->year;

}else{
$mds="mds not found";
}

这种方式有效:

$mds = $jfo->years[0]->year;

1 个答案:

答案 0 :(得分:0)

假设您确定设置后该值不是NULL,那么isset()可以提供更好的服务。像

这样的东西
if( isset($jfo->years) 
    && is_array($jfo->years) 
    && isset($jfo->years[0]->year)
){
    $mds = $jfo->years[0]->year;
}else{
    $mds = 'mds not found';
}

或者,如果你想减少冗长,并确保$jfo->years将是一个数组。

$mds = isset($jfo->years[0]->year) ? $jfo->years[0]->year : 'mds not found';

或者,如果你正在运行php> = 7并且想要更简洁。

$mds = $jfo->years[0]->year ?? 'mds not found';