我知道以前曾问过类似的问题。但我要问的原因是因为我在这些问题中尝试了很多这样的解决方案,但似乎没有什么对我有用。 :(让我们说我尝试过这些问题: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;
}
没有什么能真正发挥作用。不知道我哪里出错了。任何帮助或建议表示赞赏。提前谢谢。
答案 0 :(得分:2)
你在调用object属性之前尝试解码json吗?
$apiResult = json_decode(connect_to_api($link));
echo $apiResult->id;
答案 1 :(得分:1)
在你的foreach中,你基本上处理对象属性并获取作为名称返回的属性=&gt;价值对。
所以在你的陈述中: -
<application
android:name="...MainApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="....MainActivity"
android:configChanges="locale"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
foreach($apiResult as $result){
echo $result->id;
}
将是$result
,91
,city name
....即每个属性的值,而不是对象。
因此,例如,如果您像这样编码foreach,它将演示此
area name
但这不太可能是你想做的事情,我假设你只是想通过名字来获取属性,所以使用
// foreach over the object
foreach ( $apiResult as $property => $Value ) {
echo "Property Name = $property";
echo " Property Value = $value <br>";
}