2016-06-10 115 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;