在没有收到通知的情况下发现生成数组中的值是否存在


Finding Out if a Value in a Generated Array Exists Without Getting a Notice

我有一个数组$beerArray,它是从JSON API解析数据并将其放入PHP数组中获得的。有某些值,如$beer_name,我希望在JSON数据中,但并不总是在那里,导致该值不存在于数组中。我已经设置了一些……针对这些情况调整的Else语句:

if (!($beerArray->response->beer->beer_name)) {
    do something
    }   
else {
    do something else
    }   
}   

这可以防止错误,如试图将变量分配给不存在的数组值,但我仍然得到这个讨厌的通知:

Notice: Undefined property: stdClass::$beer_name in /Users/x_/Documents/html/php/populatebeer.php on line 66

是否有更好的方法来构建我的逻辑以避免这些通知?它使日志充满了误报,这是我想避免的。

使用isset()函数。只需传递您希望看到的变量是否已设置,如果该变量存在,此函数将返回true,如果不存在,则返回false。

例如,将if语句改为:

if (!isset($beerArray->response->beer->beer_name)) {

如果没有设置beer_name,则执行第一个块。如果它的名称是

,则执行第二个块

文档如下:http://php.net/manual/en/function.isset.php