J'essaie d'obtenir une propriété de données JSON décodée dans un objet PHP. Il s'agit simplement d'une demande d'API de données YouTube qui renvoie un objet vidéo contenant un objet de contenu.
[content] => stdClass Object
(
[5] => https://www.youtube.com/v/r4ihwfQipfo?version=3&f=videos&app=youtube_gdata
[1] => rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
[6] => rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
)
Faire
$object->content->5
Lance "T_DNUMBER inattendu" - ce qui est parfaitement logique. Mais comment puis-je obtenir la valeur d'une propriété qui est un nombre?
Je suis sûr que je devrais le savoir. Merci d'avance.
Cela devrait fonctionner:
$object->content->{'5'}
Une autre possibilité consiste à utiliser le deuxième paramètre de json_decode:
$obj = json_decode(str, true);
Vous obtenez un tableau au lieu d'un objet PHP, que vous pouvez ensuite indexer comme d'habitude:
$obj['content'][5]
Une autre approche consiste à convertir l'objet en tableau.
$array = (array) $object;
$array['content'][5];
JSON encodez, puis décodez votre objet en passant true en tant que second paramètre de la fonction de décodage. Cela retournera un tableau associatif.
$array = json_decode(json_encode($object), true);
Maintenant, vous pouvez utiliser votre nouveau tableau
echo $array['content']['5'];
Utiliser $object->content->{'5'}
va not fonctionne si l’objet a été créé en transformant un tableau en objet.
Une description plus détaillée peut être trouvée ici: https://stackoverflow.com/a/10333200/58795