我正在使用Amazon API获取一些XML数据,然后通过json_decode()函数传递。
以下是返回的两个数据样本:
[BrowseNodes] => Array
(
[Request] => Array
(
[IsValid] => True
[BrowseNodeLookupRequest] => Array
(
[BrowseNodeId] => 2645269011
[ResponseGroup] => BrowseNodeInfo
)
)
[BrowseNode] => Array
(
[BrowseNodeId] => 2645269011
[Name] => Featured Categories
[Children] => Array
(
[BrowseNode] => Array
(
[0] => Array
(
[BrowseNodeId] => 3741261
[Name] => Cooktops
)
[1] => Array
(
[BrowseNodeId] => 3741271
[Name] => Dishwashers
)
[2] => Array
(
[BrowseNodeId] => 3741331
[Name] => Freezers
)
[3] => Array
(
[BrowseNodeId] => 2399939011
[Name] => Ice Makers
)
)
)
和
[BrowseNodes] => Array
(
[Request] => Array
(
[IsValid] => True
[BrowseNodeLookupRequest] => Array
(
[BrowseNodeId] => 3774781
[ResponseGroup] => BrowseNodeInfo
)
)
[BrowseNode] => Array
(
[BrowseNodeId] => 3774781
[Name] => Vitamin D
[Children] => Array
(
[BrowseNode] => Array
(
[BrowseNodeId] => 6936848011
[Name] => D3
)
)
然后我使用此代码获取每个孩子的数据:
if(isset($result['BrowseNodes']['BrowseNode']['Children'])){
$childs = $result['BrowseNodes']['BrowseNode']['Children']['BrowseNode'];
foreach($childs as $child){
$browsenodeid = $child['BrowseNodeId'];
$name = $child['Name'];
}
}
第一个示例中的一切正常,但在第二个示例中,我收到以下错误:
警告:非法字符串偏移'BrowseNodeId'
警告:非法字符串偏移'名称'
如果我在第二个例子中回显$ browsenodeid和$ name,它会给我6和D作为输出。
关于我做错了什么的任何想法?我很困惑;对我来说,我在两种情况下循环的数据似乎是相同的,唯一的区别是在第一种情况下,数组有4个元素,在第二种情况下它有1个元素。
提前致谢。
答案 0 :(得分:0)
我认为原因是:在案例1中:结构为[BrowseNode][0][BrowseNodeId]
,而在案例2中,[BrowseNode][BrowseNodeId]
缺少[0]
,您可以在数据中修复它。