2015-09-08 77 views
-2

我有以下的JSON文件嵌套的JSON PHP解碼

{ 
    "username」: 「userabc」, 
    「locations」: [ 
     { 
      「locationId": "2123", 
      「locationName": "Test Site", 
      「setupDate」: "0000-00-00", 
      「dataType」: { 
       「book」: [ 
        { 
         「bookId": 「1257245", 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        }, 
        { 
         「bookId": 「4257245", 
         「information」: 「Infotag 11」, 
         「addedDate": "0000-00-00 00:00:00" 
        }, 
        { 
         「bookId": 「2227242」, 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        } 
       ], 
       「tape」: [ 
        { 
         「tapeId": 「1220」, 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        }, 
        { 
         「tapeId": 「1320」, 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        } 
       ], 
       「record」: [ 
        { 
         「recordId": 「a21322」, 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        }, 
        { 
         「recordId": 「b213222」, 
         「information」: 「Infotag 181」, 
         「addedDate": "0000-00-00 00:00:00" 
        } 
       ], 
       "virtual": [ 
        { 
         「virtId": "2123", 
         「information」: "57235", 
         「addedDate」: "0000-00-00 00:00:00", 

        } 
       ] 
      } 
     } 
    ] 
} 

我目前正在試圖訪問的嵌套部分(計數bookIDs的數量)。我已經完成了以下操作,可以打印locationName,但無法打印bookId,我不確定我要出錯的地方。

$obj = json_decode($json,true); 

foreach($obj['locations'] as $chunk) { 
    $locName = $chunk['locationName']; 
    echo $locName; 
} 

這是我遇到問題的部分,我無法看到任何結果?

foreach($obj['locations']['book'] as $chunk) { 
    $bkId = $chunk['bookId']; 
    echo $bkId; 
} 
+1

那麼你有什麼嘗試?你有什麼困難呢? –

+0

SO不是一個**免費編碼資源**,我們**不按規範工作,甚至不是很好的**,您預計會爲自己嘗試一些東西。如果您在嘗試編碼時遇到特定問題,請提出問題,我們非常樂意幫助 – RiggsFolly

+0

閱讀[PHP手冊的JSON頁面](http://php.net/manual/en/ref .json.php) – RiggsFolly

回答

1

$obj['locations']是一個集合。您需要使用foreach迭代它,或者只需使用$obj['locations'][0]訪問第一個元素。即你可以訪問$obj['locations'][0]['books']

如果您使用error_reporting(0);ini_set('display_errors', true);運行您的代碼,您將在訪問數組中不存在的鍵時收到警告,以便您在此處瞭解到有什麼問題。