PHP Json_解码多维数组
我试图在PHP中解码json代码的一部分。json看起来像:PHP Json_解码多维数组,php,json,multidimensional-array,Php,Json,Multidimensional Array,我试图在PHP中解码json代码的一部分。json看起来像: "title":"A Title Here", "images":[ { "coverType":"fanart", "url":"some_random_file_here.jpg" }, { "coverType":"banner", "url":"another_random_file_here.jpg" }, { "coverType":"poster", "url":"yet
"title":"A Title Here",
"images":[
{
"coverType":"fanart",
"url":"some_random_file_here.jpg"
},
{
"coverType":"banner",
"url":"another_random_file_here.jpg"
},
{
"coverType":"poster",
"url":"yet_another_random_file_here.jpg"
}
],
$somevariable = $item['series']['tvdbId'];
我想获取标题下的url:“banner”
我可以使用以下代码轻松解析标题:
$itemNr = 0;
foreach($json as $item) {
$mytitle = $item['title'];
echo $mytitle;
$itemNr++;
使用相同的概念,我的代码看起来会是什么样子。请注意,我已经简化了JSON的代码。上面代码中未显示的某些项目的实际php如下所示:
"title":"A Title Here",
"images":[
{
"coverType":"fanart",
"url":"some_random_file_here.jpg"
},
{
"coverType":"banner",
"url":"another_random_file_here.jpg"
},
{
"coverType":"poster",
"url":"yet_another_random_file_here.jpg"
}
],
$somevariable = $item['series']['tvdbId'];
非常感谢您的建议
谢谢
H.如果您可以访问图像键,则:
<?php
$json = <<<JSON
{
"title":"A Title Here",
"images":[
{
"coverType":"fanart",
"url":"some_random_file_here.jpg"
},
{
"coverType":"banner",
"url":"another_random_file_here.jpg"
},
{
"coverType":"poster",
"url":"yet_another_random_file_here.jpg"
}
]
}
JSON;
$json = json_decode($json);
print_r($json);
foreach ($json->images as $img)
{
if ( $img->coverType == "banner" )
{
echo 'Image Cover Type: ' .$img->coverType .'<br/>';
echo 'URL: ' .$img->url .'<br/>';
}
}
?>
给出:
图片封面类型:横幅
URL:另一个_random_文件_here.jpg
更新:
您链接到的JSON文件似乎无效,每个系列后面都缺少大括号。以下是更正后的JSON和代码:
<?php
$json = <<<JSON
[
{
"series": {
"title": "Brooklyn Nine-Nine",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/269586-15.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/269586-g3.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/269586-13.jpg"
}
],
"year": 2013
}
},
{
"series": {
"title": "The Middle",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/95021-16.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/95021-g14.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/95021-8.jpg"
}
],
"year": 2009
}
},
{
"series": {
"title": "New Girl",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/248682-43.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/248682-g20.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/248682-14.jpg"
}
],
"year": 2011
}
}
]
JSON;
$json = json_decode($json);
// echo '<pre>' .print_r($json, 1) .'</pre>';
foreach ($json as $item)
{
echo 'Title: ' .$item->series->title .'<br/>';
foreach ($item->series->images as $img)
{
if ( $img->coverType == "banner" )
{
echo 'Image Cover Type: ' .$img->coverType .'<br/>';
echo 'URL: ' .$img->url .'<br/>';
}
}
}
?>
给出:
标题:布鲁克林九九
图片封面类型:横幅
网址:
标题:中间
图片封面类型:横幅
网址:
标题:新女孩
图片封面类型:横幅
URL:如果您可以访问图像键,则:
<?php
$json = <<<JSON
{
"title":"A Title Here",
"images":[
{
"coverType":"fanart",
"url":"some_random_file_here.jpg"
},
{
"coverType":"banner",
"url":"another_random_file_here.jpg"
},
{
"coverType":"poster",
"url":"yet_another_random_file_here.jpg"
}
]
}
JSON;
$json = json_decode($json);
print_r($json);
foreach ($json->images as $img)
{
if ( $img->coverType == "banner" )
{
echo 'Image Cover Type: ' .$img->coverType .'<br/>';
echo 'URL: ' .$img->url .'<br/>';
}
}
?>
给出:
图片封面类型:横幅
URL:另一个_random_文件_here.jpg
更新:
您链接到的JSON文件似乎无效,每个系列后面都缺少大括号。以下是更正后的JSON和代码:
<?php
$json = <<<JSON
[
{
"series": {
"title": "Brooklyn Nine-Nine",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/269586-15.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/269586-g3.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/269586-13.jpg"
}
],
"year": 2013
}
},
{
"series": {
"title": "The Middle",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/95021-16.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/95021-g14.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/95021-8.jpg"
}
],
"year": 2009
}
},
{
"series": {
"title": "New Girl",
"images": [
{
"coverType": "fanart",
"url": "http://thetvdb.com/banners/fanart/original/248682-43.jpg"
},
{
"coverType": "banner",
"url": "http://thetvdb.com/banners/graphical/248682-g20.jpg"
},
{
"coverType": "poster",
"url": "http://thetvdb.com/banners/posters/248682-14.jpg"
}
],
"year": 2011
}
}
]
JSON;
$json = json_decode($json);
// echo '<pre>' .print_r($json, 1) .'</pre>';
foreach ($json as $item)
{
echo 'Title: ' .$item->series->title .'<br/>';
foreach ($item->series->images as $img)
{
if ( $img->coverType == "banner" )
{
echo 'Image Cover Type: ' .$img->coverType .'<br/>';
echo 'URL: ' .$img->url .'<br/>';
}
}
}
?>
给出:
标题:布鲁克林九九
图片封面类型:横幅
网址:
标题:中间
图片封面类型:横幅
网址:
标题:新女孩
图片封面类型:横幅
URL:假设这是变量JSONDECODE,
$json[images][1]->coverType 假设这是变量JSONDECODE,
$json[images][1]->coverType
foreach($item['images']为$v)
谢谢。我试图做的是只返回coverType:banner下的“url”值。我想忽略其他人。我猜它会是这样的:$myurl=$item['images']['coveType:banner'].[url']
foreach($item['images']作为$v)
谢谢。我试图做的是只返回coverType:banner下的“url”值。我想忽略其他人。我猜它会是这样的:$myurl=$item['images']['coveType:banner'].[url']谢谢你,斯图尔特。正如我在上面的评论中所描述的,我只想获取coverType:banner下的url的值。基本上,我想要一个变量,它将返回我的值,在我的示例中,这个值将是“另一个\u random\u file\u here.jpg”。我不知道这个值是多少,因为它们会有很大的差异。我希望这有道理。对不起,斯图尔特。不是什么大专家。。。我的json字符串将包含may条目,我已经创建了一个更扩展的json输出示例。不知道如何创建我的代码,以便为每个条目获取“标题”,为每个条目获取横幅“url”。我只是不明白你的答案与我需要为每个数组条目搜集的标题和其他数据有什么关系。非常感谢你的帮助。我会更新我的答案。您的JSON也无效-每个系列的结尾都缺少大括号…谢谢Stuart。。。。这就是答案。我非常感谢你的帮助。我已经试了好几个小时了。无效的JSON可能是因为为了清晰起见我简化了代码,并且我确信我删除了一些东西。非常非常感谢!谢谢你,斯图尔特。正如我在上面的评论中所描述的,我只想获取coverType:banner下的url的值。基本上,我想要一个变量,它将返回我的值,在我的示例中,这个值将是“另一个\u random\u file\u here.jpg”。我不知道这个值是多少,因为它们会有很大的差异。我希望这有道理。对不起,斯图尔特。不是什么大专家。。。我的json字符串将包含may条目,我已经创建了一个更扩展的json输出示例。不知道如何创建我的代码,以便为每个条目获取“标题”,为每个条目获取横幅“url”。我只是不明白你的答案与我需要为每个数组条目搜集的标题和其他数据有什么关系。非常感谢你的帮助。我会更新我的答案。您的JSON也无效-每个系列的结尾都缺少大括号…谢谢Stuart。。。。这就是答案。我非常感谢你的帮助。我已经试了好几个小时了。无效的JSON可能是因为为了清晰起见我简化了代码,并且我确信我删除了一些东西。非常非常感谢!你能详细说明这个答案吗?如果这是另一个问题或答案,我就不知道了。“$json=$json_decode($variablenam);”$json[images][1]->coverType;'请看,在json中,您可以通过对象访问每个对象,比如您可以通过images->covertype,但是您可以看到covertype数据位于数组中,因此我们使用image[array position of covertype]->covertype;你能详细说明这个答案吗?如果这是另一个问题或答案,我就不知道了。“$json=$json_decode($variablenam);”$json[images][1]->coverType;'请看,在json中,您可以通过对象访问每个对象,比如您可以通过images->covertype,但是您可以看到covertype数据位于数组中,因此我们使用image[array position of covertype]->covertype;