2016-12-13 149 views
0

我想解碼PHP中的一部分json代碼。 JSON的看起來像:PHP Json_decode多維數組

"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" 
} 

], 

我想要得到的網址即下「coverType」:「旗幟」

我可以很容易地解析爲以下代碼標題:

$itemNr = 0; 
      foreach($json as $item) { 
       $mytitle = $item['title']; 
       echo $mytitle; 
$itemNr++; 

我的代碼如何使用相同的概念。請注意,我簡化了JSON的代碼。上面我的代碼中未顯示的一些項目的實際php看起來像這樣:

$somevariable = $item['series']['tvdbId']; 

任何意見是非常感謝。

感謝,

H.

+0

'foreach($ item ['images'] as $ v)' –

+0

謝謝。我想要做的只是返回coverType:標題下的「url」值。我想忽略其他人。我猜測它會是這樣的:'$ myurl = $ item ['images'] ['coveType:banner']'[url'];' – Hernandito

回答

2

如果可以訪問圖像鍵,然後:

<?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/>'; 
    } 
} 
?> 

給出:

圖片封面類型:橫幅

網址: another_random_file_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/>'; 
     } 
    } 
} 
?> 

給出:

標題:神煩警察 圖片封面類型:橫幅 網址:http://thetvdb.com/banners/graphical/269586-g3.jpg

標題:中東 圖片封面類型:橫幅 URL:http://thetvdb.com/banners/graphical/95021-g14.jpg

標題:新女孩 圖片封面類型:橫幅 URL:http://thetvdb.com/banners/graphical/248682-g20.jpg

+0

謝謝斯圖爾特。正如我在上面的評論中所描述的,我只想獲取coverType下的url值:banner。基本上我想要一個變量,將返回我在我的例子中的值將是「another_random_file_here.jpg」。我不知道這個值會是什麼,因爲它們會有很大的差異。我希望這是有道理的。 – Hernandito

+0

然後檢查是否coverType ==橫幅,我會編輯我的答案... – Stuart

+0

對不起Stuart。不是一個大的專家......我的json字符串將包含可能條目,我已經創建了JSON輸出的更多擴展示例。 [見Pastebin](http://pastebin.com/kpxVYFF1)。不知道如何創建我的代碼,以便我可以爲每個條目獲取「標題」,每個條目都有一個標題「url」。我只是不明白你的答案將如何與**標題**和我需要爲每個數組條目進行刮取的其他數據相關。萬分感謝您的幫助。 – Hernandito