【发布时间】:2017-04-21 08:24:40
【问题描述】:
如何在 PHP 中遍历这个 JSON 字符串并获取所有 URL?
{
"item": "1.2.840.113619.2.55.1.1762903756.1942.1319006898.442",
"title": [{
"images": "{'1.2.840.113619.2.55.1.1762903756.1942.1319006898.446.1':{'url': 'https:www.example11.com', 'observationTime': 'None'}}"
},
{
"images": "{'1.2.840.113619.2.55.1.1762903756.1942.1319006898.446.1':{'url': 'https:www.example33.com', 'observationTime': 'None'}, '1.2.840.113619.2.55.1.1762903756.1942.1319006898.446.55':{'url': 'https:www.example44.com', 'observationTime': 'None'}, '1.2.840.113619.2.55.1.1762903756.1942.1319006898.446.99':{'url': 'https:www.example55.com', 'observationTime': 'None'}}"
},
{
"images": "{'1.2.840.113619.2.55.1.1762903756.1942.1319006898.446.1':{'url': 'https:www.example66.com', 'observationTime': 'None'}}"
}
]
}
尝试了以下方法,但没有成功
$data=json_decode ($stringBody,TRUE);
for($i=0; $i<count($data['title']); $i++) {
$data=$data['title'];
foreach($data as $obj){
$imagesData =$obj['images'];
foreach($imagesData as $value){
print "<p>" . $value->url . "</p>";
}
}
}
感谢您的帮助。
【问题讨论】:
-
您应该为循环中的变量使用不同的名称;不要覆盖
$data。另请注意,您不需要循环中的循环,1应该这样做。 -
当您在 json decode 中传递 true 时,它将转换为递归多维数组 .. 所以使用
$value['url']而不是$value->url -
@jeroen 谢谢,尝试了您的建议,但没有成功。 foreach($imagesData as $value){ print "
" . $价值->网址。 "
"; } 永远不会被调用