2016-12-13 26 views
0

PHPでjsonコードの一部をデコードしようとしています。私は簡単に次のコードでタイトルを解析することができ、「バナー」PHP Json_decode多次元配列

::私は「coverType」の下にあるURLを取得したい

"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は何かのように見えます

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

を与える:

イメージ・カバータイプ:バナーを

URL: another_random_file_here.jpg

UPDATE:

リンク先の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/>'; 
     } 
    } 
} 
?> 

を与える:ここで修正JSON、およびコードです

タイトル:ブルックリン九九 画像カバータイプ:バナー URL:http://thetvdb.com/banners/graphical/269586-g3.jpg

タイトル:中東 イメージ・カバータイプ:バナー URL:http://thetvdb.com/banners/graphical/95021-g14.jpg

タイトル:新しい女の子 イメージの表紙の種類:バナー URL:

+0

Stuartありがとう。上記のコメントで説明しているように、私はcoverTypeの下にあるURLの値を取得したいだけです:バナー。基本的には、私の例では "another_random_file_here.jpg"という値を返す変数が必要です。私はこの価値がどれほど変わるか分かりません。私はこれが理にかなってほしい。 – Hernandito

+0

次に、coverType ==バナーかどうかを確認して、私の答えを編集します。 – Stuart

+0

申し訳ありません。大きな専門家ではありません...私のJSON文字列にはエントリが含まれていますが、JSON出力のサンプルをさらに拡張して作成しました。 [Pastebin](http://pastebin.com/kpxVYFF1)を参照してください。私のコードをどのように作成するかわからないので、各エントリーのバナー「URL」を得ることができます。あなたの答えが** Title **とどのように関連するのか分かりません。そして、私は各配列エントリーのためにスクレイプする必要があります。あなたの助けに100万のおかげです。 – Hernandito