2010-11-02 4 views
9

j'avais une question à faire un 2D JSON stringPHP JSON decode - stdClass

Maintenant, je voudrais savoir pourquoi je ne peux pas accéder aux éléments suivants:

$json_str = '{"urls":["http://example.com/001.jpg","http://example.com/003.jpg","http://example.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}'; 

$j_string_decoded = json_decode($json_str); 
// echo print_r($j_string_decoded); // OK 

// test get url from second item 
echo j_string_decoded['urls'][1]; 
// Fatal error: Cannot use object of type stdClass as array 

Répondre

22

Vous accédez avec la syntaxe semblable à un tableau:

echo j_string_decoded['urls'][1]; 

Alors objet est retourné.

convertir en tableau en spécifiant second argument true:

$j_string_decoded = json_decode($json_str, true); 

Rendre:

$json_str = '{"urls":["http://site.com/001.jpg","http://site.com/003.jpg","http://site.com/002.jpg"],"alts":["testing int chars àèéìòóù stop","second description",""],"favs":["true", "false", "false"]}'; 

$j_string_decoded = json_decode($json_str, true); 
echo j_string_decoded['urls'][1]; 

Ou essayez ceci:

$j_string_decoded->urls[1] 

Avis l'opérateur -> utilisé pour les objets .

Citation de Documents:

Renvoie la valeur codée dans json dans type PHP approprié. Les valeurs true, false et null (insensible à la casse) sont renvoyées en tant que TRUE, FALSE et NULL respectivement. NULL est renvoyé si le fichier json ne peut pas être décodé ou si les données codées sont plus profondes que la limite de récursivité .

http://php.net/manual/en/function.json-decode.php

+0

bonne réponse, acclamations Sarfraz – FFish

+0

@FFish: Bienvenue :) – Sarfraz

5

Utilisation:

json_decode($jsonstring, true); 

pour renvoyer un tableau.

+0

m'a sauvé! : vvvvvv –

7

json_decode par défaut transforme les dictionnaires JSON en objets PHP, donc vous accéder à votre valeur $j_string_decoded->urls[1]

Ou vous pourriez passer un argument supplémentaire json_decode($json_str,true) pour avoir le retour des tableaux associatifs, qui serait alors compatible avec $j_string_decoded['urls'][1]

+0

Merci pour l'explication! – FFish