2015-09-08 76 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);运行您的代码,您将在访问数组中不存在的键时收到警告,以便您在此处了解到有什么问题。