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


When i apply array_key_exists funciton it doesnt return value from 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;

假设您确定该值在设置时不会是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';