2016-06-10 128 views
-3

我有以下代码:JSON多个阵列解码

$json = ' { 
    "HTML": 
     [ 
      { 
       "id": 1, 
       "name": "HTML", 
       "match": false 
      }, 
      { 
       "id": 2, 
       "name": "HTML 5", 
       "match": false 
      }, 
      { 
       "id": 3, 
       "name": "XHTML", 
       "match": false 
      } 
     ] 
}'; 

$obj = json_decode($json); 
$obj[0][0]->name; // JavaScript: The Definitive Guide 

为什么我收到以下错误?型stdClass的的

使用对象作为阵列

我正确地解码JSON,比我说,我想选择从阵列的第一个对象(在这种情况下HTML)和比我想选择数组中第一个的名称。

什么问题?

+1

第一级数据不是JSON数组,它是JSON对象,所以PHP将它解码为'stdClass'的一个实例。接下来,数据的第一级是'HTML',而不是'0'。最后,如果你想强制解码来将所有的东西都设置为数组,在你的'json_decode'中设置第二个参数为'true'。 –

+0

第一件事是一个对象,在属性里面'HTML'是你的数组,你想用[[0] - > name]访问它, – Rizier123

回答

1

您的第一个JSON是对象(HTML),它包含另一个对象的数组。您必须调用->HTML[0](它是您的数组中的第一个对象),然后调用->name,它是HTML对象的参数。

$obj->HTML[0]->name;