打印 stdClass 对象值

Printing stdClass Object value

我知道以前有人问过类似的问题。但我问的原因是因为我在这些问题中尝试了此处提供的许多解决方案,但似乎对我没有任何作用。 :( 假设我已经尝试过这些问题:1 2 3

背景

我正在调用 RESTAPI 并获取 json 格式的数据。

$apiResult  = connect_to_api($link); // function works fine

echo '<pre>';
echo print_r(json_decode($apiResult));
echo '</pre>';

当我打印时,我得到以下结果:

stdClass Object
(
    [id] => 91
    [name_1] => city name
    [name_2] => area name
    [name_3] => municipality
    [web] => www.example.com
)

问题范围

当我尝试只访问 id 的值时,它说试图获取非对象 属性。比如我试过

echo $apiResult->id;

foreach($apiResult as $result){
    echo $result->id;
}

没有任何效果。不知道我哪里错了。任何帮助或建议表示赞赏。提前致谢。

您是否尝试在调用对象 属性 之前解码 json?

$apiResult = json_decode(connect_to_api($link));
echo $apiResult->id;

在您的 foreach 中,您基本上是在处理对象属性并将属性作为名称 => 值对返回。

所以在你的这个声明中:-

foreach($apiResult as $result){
    echo $result->id;
}

$result 将是 91city namearea name .... 即每个 属性 的值,而不是一个对象。

例如,如果您像这样编写 foreach 代码,它会演示这一点

// foreach over the object
foreach ( $apiResult as $property => $Value ) {
    echo "Property Name =  $property";
    echo " Property Value = $value <br>";
}

但这不太可能是你想要做的,我假设你只是想通过名称获取属性,所以使用

echo $apiResult->id;
echo $apiResult->name_1;

etc