2016-12-13 12 views
0

Ich versuche, einen Teil eines JSON-Codes in PHP zu dekodieren. Die json sieht ungefähr so ​​aus:PHP Json_decode Multidimensionales Array

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

], 

ich die url erhalten möchten, die unter dem "coverType" ist: "Banner"

ich leicht den Titel mit dem folgenden Code analysieren kann:

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

Wie würde mein Code mit dem gleichen Konzept aussehen? Bitte beachten Sie, dass ich den Code von JSON vereinfacht habe. Die tatsächliche php für einige Elemente nicht auf meinem Code oben sieht in etwa so aus:

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

Jeder Rat wird sehr geschätzt.

Danke,

H.

+0

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

+0

Danke. Was ich versuche, ist, NUR den "url" Wert unter dem coverType: Banner zurückzugeben. Ich möchte die anderen ignorieren. Ich dachte, es wäre so etwas wie: '$ myurl = $ item ['images'] ['coveType: banner'] '[url'];' – Hernandito

Antwort

2

Wenn Sie die Bilder Taste, dann zugreifen können:

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

Gibt:

Image Cover Art: Banner

URL: another_random_file_here.jpg

UPDATE:

Die JSON-Datei, die Sie verknüpfen, scheint ungültig, fehlende Klammern nach jeder Serie. Hier ist die korrigierte JSON und Code:

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

Gibt:

Titel: Brooklyn Nine-Nine Image Cover Art: Banner URL: http://thetvdb.com/banners/graphical/269586-g3.jpg

Titel: The Middle Image Cover Art: banner URL: http://thetvdb.com/banners/graphical/95021-g14.jpg

Titel: New Girl Image Cover Art: banner URL: http://thetvdb.com/banners/graphical/248682-g20.jpg

+0

Danke Stuart. Wie ich in meinem Kommentar oben beschrieben habe, möchte ich nur den Wert für die URL, die unter coverType: Banner ist, erhalten. Im Grunde möchte ich eine Variable, die mir den Wert zurückgibt, der in meinem Beispiel "another_random_file_here.jpg" wäre. Ich habe keine Ahnung, was dieser Wert sein wird, da sie sehr unterschiedlich sein werden. Ich hoffe das macht Sinn. – Hernandito

+0

Dann überprüfen, ob CoverType == Banner, ich werde meine Antwort bearbeiten ... – Stuart

+0

Sorry Stuart. Kein großer Experte ... Meine JSON-Zeichenkette enthält may-Einträge, ich habe ein erweitertes Beispiel der JSON-Ausgabe erstellt. [Siehe Pastebin] (http://pastebin.com/kpxVYFF1). Ich bin mir nicht sicher, wie ich meinen Code erstellen soll, damit ich für jeden Eintrag einen "Titel" bekomme, für jeden Eintrag ein Banner "URL".Ich verstehe nur nicht, wie sich Ihre Antwort auf den ** Titel ** und andere Daten beziehen wird, die ich für jeden Array-Eintrag abkratzen muss. Tausend Dank für deine Hilfe. – Hernandito