2013-04-10 86 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。