2013-04-10 124 views
0

我已將一個JSON文件解碼爲一個變量($tmp)。 var_dump($tmp)給出:Php和JSON:對象(stdClass)

object(stdClass)#31 (3) { 
    ["c"]=> int(2) 
    ["r"]=> int(2) 
    ["d"]=> object(stdClass)#32 (4) { 
       ["1"]=> string(2) "un" 
       ["2"]=> string(4) "deux" 
       ["3"]=> string(5) "trois" 
       ["4"]=> string(6) "quatre" 
      } 
} 

我想檢索例如「UN」所以我做$tmp->d["1"],但它不工作。我有以下錯誤:

Fatal error: Cannot use object of type stdClass as array in File.php on line 17 
+0

可能重複的[不能使用stdClass類型的對象作爲數組嗎?](http://stackoverflow.com/questions/6815520/cannot-use-object-of-type-stdclass-as-array) – hakre 2013-05-02 16:07:33

回答

2

json_decode需要額外paramater正如評論指出,將您JSON字符串數組,而不是一個對象

json_decode($json_str, true)

的,你的財產d你的json對象是一個不是數組的對象,所以你不能用數組符號來訪問它(因爲你看到有錯誤)

我相信

$tmp->d->{'1'} 
// "un" 

應在訪問它

+2

這是一個解決方法。它不回答這個問題。爲什麼他應該把字符串變成一個數組,當它作爲一個對象完美地工作時呢? – 2013-04-10 13:47:33

+0

我可以請你不要回答明顯的重複問題嗎?如果您對Google搜索結果進行了窺視(至少對於我的口味,但我相信您不會認爲差別很大),那麼關於此錯誤消息的問題已經太多了,相反,爲什麼不建議將問題作爲重複來解決?如果您希望特別爲OP提供額外幫助,您還可以通過評論留下一些指導。 – hakre 2013-05-02 16:08:39

0

PHP工作有一個默認功能json_encode和json_decode

$arrayOfValues = array(); 
$jsonString = json_encode($arrayOfValues); 

$arrayOfValues = json_decode($jsonString); 

使用此功能,您可以使用variabled使用JSON。