2016-04-30 217 views
0

我從monogodb中獲取位置:[],然後將其編碼爲json並將其打印在屏幕上。這裏是輸出:試圖獲取非對象的屬性

{"57237036d89c45e1e3fda94e":{"_id":{"$id":"57237036d89c45e1e3fda94e"},"location":[33.7715,72.7511]}} 

現在的問題是,我試圖從這個JSon只得到位置,所以我解碼它。這裏是代碼:

echo $arr= json_encode(iterator_to_array($cursor)); 
    $j= json_decode($arr,true); 
    var_dump($j->location); 

var_dump返回null。此外,它顯示以下錯誤

Trying to get property of non-object 

PS:我知道這個問題已被問了很多次,但我找不到解決方案。

+0

應該是'json_decode($ ARR);'或'json_decode($ arr,false);'檢查[json_decode](http://php.net/manual/en/function.json-decode.php)手冊 – bansi

+0

嘗試過。仍然返回null,錯誤是未定義的屬性:stdClass :: $ location – puffles

+1

可能的重複[如何從JSON提取數據與PHP?](http://stackoverflow.com/questions/29308898/how-doi-i-提取數據從json與php) –

回答

0

$j->location仍然無效。您可以通過以下2種方法

獲得位置

您所在的位置是$j->57237036d89c45e1e3fda94e->location

$arr = '{"57237036d89c45e1e3fda94e":{"_id":{"$id":"57237036d89c45e1e3fda94e"},"location":[33.7715,72.7511]}}'; 
$j= json_decode($arr); 
$x = '57237036d89c45e1e3fda94e'; 
var_dump($j->$x->location); 
// if you don't want to declare $x 
var_dump($j->{'57237036d89c45e1e3fda94e'}->location); 

或使用數組方法

$j = json_decode($arr, true); 
var_dump($j['57237036d89c45e1e3fda94e'][location]); 
+0

獲得位置我怎樣才能擺脫這個:'57237036d89c45e1e3fda94e' – puffles

+0

這一個工作:var_dump($ j - > {'57237036d89c45e1e3fda94e'} - > location); – puffles

+0

那是在你的json字符串中,你可能需要改變它 – bansi

相關問題