Получить свойство объекта 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" - что имеет смысл. Но как я могу получить значение свойства, которое является числом?
Я уверен, что я должен знать это. Заранее спасибо.
4 ответа
Другая возможность - использовать второй параметр для json_decode:
$obj = json_decode(str, true);
Вы получаете массив вместо объекта PHP, который затем можете индексировать как обычно:
$obj['content'][5]
JSON кодирует, а затем декодирует ваш объект, передавая true в качестве второго параметра функции декодирования. Это вернет ассоциативный массив.
$array = json_decode(json_encode($object), true);
Теперь вы можете использовать свой новый массив
echo $array['content']['5'];
С помощью $object->content->{'5'}
не будет работать, если объект был создан путем приведения массива к объекту.
Более подробное описание можно найти здесь: /questions/15295545/kak-poluchit-dostup-k-svojstvam-obekta-s-takimi-imenami-kak-tselyie-chisla/15295561#15295561
Еще один подход - приведение объекта к массиву.
$array = (array) $object;
$array['content'][5];