打印stdClass对象值

时间:2015-11-05 09:58:24

标签: php object echo stdclass

我知道以前曾问过类似的问题。但我要问的原因是因为我在这些问题中尝试了很多这样的解决方案,但似乎没有什么对我有用。 :(让我们说我尝试过这些问题: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;
}

没有什么能真正发挥作用。不知道我哪里出错了。任何帮助或建议表示赞赏。提前谢谢。

2 个答案:

答案 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; } 将是$result91city name ....即每个属性的值,而不是对象。

因此,例如,如果您像这样编码foreach,它将演示此

area name

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

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