2015-11-05 103 views
0

我知道類似的問題之前曾被問過。但是我要問的原因是因爲我在這些問題中嘗試了許多這裏提供的解決方案,但似乎沒有任何工作適合我。 :(比方說,我嘗試了這些問題:1 2 3打印stdClass對象值

背景

我打電話到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

只讓它作爲一個數組insted的對象'json_decode($ apiResult,真)' – Mihai

+1

@Mihai的爲什麼人們想要一個完美的對象轉換成一個數組。 – RiggsFolly

+0

@RiggsFolly爲什麼不呢? – Mihai

回答

1

您是否嘗試在調用對象屬性之前解碼json?

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

@Mihai,是的,我在調用對象屬性之前做了解碼。 foreach(json_decode($ apiResult)作爲$ result){ echo $ result-> id; } 但沒有工作。 – johnshumon

+0

結果不是一個數組,而是一個簡單的對象..試試看,如果我的確看到了作品 –

+0

@Mihai,非常感謝,它的工作方式您建議! – johnshumon

1

在你的foreach中,你基本上是通過對象屬性進行處理,並獲取作爲name => value對返回的屬性。

因此,在你的這個說法: -

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

$result91city 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