PHP注意:未定义的属性:stdClass::$var in

PHP注意:未定义的属性:stdClass::$var in,php,json,properties,Php,Json,Properties,在创建一个新问题之前,我在谷歌上搜索了一个又一个问题,但我不知道如何解决我的问题。我正在创建一个PHP文件,出现以下错误: PHP注意:第517行的/my/path/www/myfile.PHP中未定义的属性:stdClass::$city 在第517行,我有以下返回值: public static function getCity($jsondata) { return $jsondata->address->city; } 如果我添加print\r($jsondata)

在创建一个新问题之前,我在谷歌上搜索了一个又一个问题,但我不知道如何解决我的问题。我正在创建一个PHP文件,出现以下错误:

PHP注意:第517行的/my/path/www/myfile.PHP中未定义的属性:stdClass::$city

在第517行,我有以下
返回值

public static function getCity($jsondata) {
    return $jsondata->address->city;
}
如果我添加
print\r($jsondata);模具()
要打印JSON文件的内容,我得到以下信息:

stdClass Object
(
    [place_id] => 198765
    [lat] => 52.1987
    [lon] => 0.1365
    [address] => stdClass Object
        (
            [road] => Devonshire Road
            [suburb] => Petersfield Ward
            [city] => Cambridge
            [county] => Cambridgeshire
            [state_district] => East of England
            [state] => Inghilterra
            [country] => Regno Unito
            [country_code] => gb
        )
)

那么,我的代码怎么了?

要打印Json文件,需要在$jsondata变量之后添加数据


打印($jsondata->data)

没什么,只是一个通知,而不是error@Andrew不,
new
是错误的,不起作用。此外,OP不必将其转换为数组。我猜您在循环中调用getCity(),上面打印的项目是第一个项目,而导致错误的项目是json数据中没有任何city字段的地址项目。正确吗?@Calimero我猜,OP的属性名中可能有一些“隐藏”字符,但循环也是一个很好的猜测:)@Lucky任何关于PHP输出的通知或警告都会指向代码中的一个bug,该bug产生了您可能没有预料/期望/想要的结果。你当然要调查!“愚蠢的PHP”试图在这里提供帮助,并告诉您您的代码是错误的。如果你想运行错误的代码,请随意使用;但是,对于程序行为中的实际问题来自何处,不要感到惊讶。