Подтвердить что ты не робот

Получить свойство объекта PHP, которое является числом

Я пытаюсь получить свойство из данных JSON, декодированных в объект PHP. Это просто запрос API данных YouTube, который возвращает видеообъект, у которого есть контент-объект, поэтому:

[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" - это имеет смысл. Но как мне получить значение свойства, которое является числом?

Я уверен, что должен это знать. Спасибо заранее.

4b9b3361

Ответ 1

Это должно работать:

$object->content->{'5'}

Ответ 2

Другая возможность - использовать второй параметр для json_decode:

$obj = json_decode(str, true);

Вы получаете массив вместо объекта PHP, который затем можно индексировать как обычно:

$obj['content'][5]

Ответ 3

Другой aproach - это листинг объекта для массива.

$array = (array) $object;
$array['content'][5];

Ответ 4

JSON encode, а затем декодирует ваш объект, передавая true как второй параметр в функции декодирования. Это вернет ассоциативный массив.

$array = json_decode(json_encode($object), true);

Теперь вы можете использовать свой новый массив

echo $array['content']['5'];

Использование $object->content->{'5'} будет работать не, если объект был создан путем литья массива в объект.

Более подробное описание можно найти здесь: fooobar.com/info/3421/...