PHPオブジェクトにデコードされたJSONデータからプロパティを取得しようとしています。コンテンツオブジェクトを持つビデオオブジェクトを返すのは、単なるYouTubeデータAPIリクエストです。
[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
)
している
$object->content->5
「予期しないT_DNUMBER」をスローします-これは完全に理にかなっています。しかし、数値であるプロパティの値を取得するにはどうすればよいですか?
これは知っておくべきだと思います。前もって感謝します。
これはうまくいくはずです:
$object->content->{'5'}
別の可能性は、json_decodeに2番目のパラメーターを使用することです。
$obj = json_decode(str, true);
PHPオブジェクトではなく、配列を取得します。これは、通常どおりにインデックスを作成できます。
$obj['content'][5]
JSONエンコードし、デコード関数の2番目のパラメーターとしてtrueを渡してオブジェクトをデコードします。これは連想配列を返します。
$array = json_decode(json_encode($object), true);
これで、新しいアレイを使用できます
echo $array['content']['5'];
配列をオブジェクトにキャストすることによってオブジェクトが作成された場合、$object->content->{'5'}
の使用は機能しません。
より詳細な説明はここにあります: https://stackoverflow.com/a/10333200/58795
別のアプローチは、オブジェクトを配列にキャストすることです。
$array = (array) $object;
$array['content'][5];