2017-11-13 1 views
0

Ich versuche, verschiedene Informationen von einem json zu extrahieren Ausgabe über json_decode zurückgekehrt, aber ich kann nicht die Informationen zuzugreifen scheinen:Display-Info mit PHP json_decode

JSON:

{"photos":{"page":1,"pages":8,"perpage":100,"total":"784","photo":[ 
{"id":"3453456456","owner":"[email protected]","secret":"xxxxxxxx","server":"4544","farm":5,"title":"XXXXXXX","ispublic":1,"isfriend":0,"isfamily":0}, 
{"id":"5468564564","owner":"[email protected]","secret":"xxxxxxxx","server":"4529","farm":5,"title":"XXXXXXX","ispublic":1,"isfriend":0,"isfamily":0}, 

PHP:

$photos = json_decode($json); 
foreach($photos as $photo){ 
$id = $photo->id; 
$owner = $photo->owner; 
$secret = $photo->secret; 
echo $id.'<br/>'; 
echo $owner.'<br/>'; 
echo $secret.'<br/>'; 
} 
+2

Scheint so, als müssten Sie 'foreach ($ photos-> photo as $ photo)' machen. Wenn Sie die JSON (dh mit jsonlint.com) schön drucken, sollte die Datenstruktur ziemlich klar sein. – JimL

+1

Eigentlich nur ein wenig mehr Tiefe 'foreach ($ photos-> Fotos-> Foto als $ Foto)' –

+0

Odd Setup der JSON-Objekt. Fast so, als wäre es unpassend gemacht worden, alles zuerst unter "Fotos" zu stopfen, wenn das die Anordnung von was unter dem singulären "Foto" hätte sein sollen (was sich seltsamerweise auf viele bezieht). – IncredibleHat

Antwort

2

Aufgrund der Tiefe des JSON müssen Sie Ihre Schleife auf der richtigen Ebene starten. Hier ist ein example:

$json = '{"photos":{"page":1,"pages":8,"perpage":100,"total":"784","photo":[ 
{"id":"3453456456","owner":"[email protected]","secret":"xxxxxxxx","server":"4544","farm":5,"title":"XXXXXXX","ispublic":1,"isfriend":0,"isfamily":0}, 
{"id":"5468564564","owner":"[email protected]","secret":"xxxxxxxx","server":"4529","farm":5,"title":"XXXXXXX","ispublic":1,"isfriend":0,"isfamily":0}]}}'; 

$photos = json_decode($json); 

foreach($photos->photos->photo as $photo){ 
$id = $photo->id; 
$owner = $photo->owner; 
$secret = $photo->secret; 
echo $id.'<br/>'; 
echo $owner.'<br/>'; 
echo $secret.'<br/>'; 
} 

Beachten Sie die erste Ebene in Ihrem JSON ist „Fotos“ und das zweite ist „Foto“.