PHP json_decode youtube api (массив)

Я пытаюсь расшифровать API YouTube. Мне не нужно все, всего несколько штук, но у меня проблемы с массивом "items".

PHP json_decode youtube api (массив)

Мой код очень прост.

$url = file_get_contents("THIS IS MY YOUTUBE API ENDPOINT");
$json = json_decode($url, true);

Если я откликнусь эхом

echo $json['kind']."<p>".$json['etag']."<p>".$json['nextPageToken']."<p>";
echo $json['pageInfo']['totalResults']."<p>".$json['pageInfo']['resultsPerPage'];

Тогда я увидел бы:

  • youtube # activityListResponse
  • этот сверхдлинный тег, который мне не хочется печатать
  • CAEQAA
  • 10
  • 1

Но мне нужна информация в ПРЕДМЕТЫ

Если я попробую print_r($json['items'][0]); Затем я получаю ВСЮ информацию из элементов в виде массива, выплевываю вот так

Array ( [kind] => youtube#activity [etag] => "ZG3FIn5B5vcHjQiQ9nDOCWdxwWo/9bAEAi43B5b3tiYpW1BAPw2aZ54" [id] => VTE1MjQwOTM0MjI5NDIyNjY4MzQ2NjUxMg== [snippet] => Array ( [publishedAt] => 2018-04-18T23:17:02.000Z [channelId] => UC6TEaGms62zd11sdt_z1UAg [title] => AppyBuilder: Create a High Score Leaderboard with Wheel of Fortune [description] => TUTORIAL DIFFICULTY: Medium/Hard You should be able to follow along easily if you are able to find blocks by looking at a screenshot. This tutorial uses Fusion Table as the Database to store/retrieve user data. You are required to already have a basic knowledge of how Fusion Table works in order to complete this tutorial. VIDEO DESCRIPTION: This video builds off the Fusion Table tutorials. Giving you additional examples on how to easily check for a Username/Password in the Fusion Table (Screen1), how to update the user's Score with a Spinning Wheel Event (EVENT Screen) and how to view all user's high scores (LEADERBOARD Screen). The tutorial focuses on the Leaderboard Screen which shows you how to grab the necessary information from the Fusion Table and output that data using a Custom List View. The Custom List will show the user's avatar, username and high score in order from highest to lowest. VIDEO CHAPTERS: Introduction - 00:00 Getting Started - 00:13 Design View - 01:19 Blocks Editor - 03:32 Testing the App - 07:34 Wrap Up - 08:00 Pixii Bomb Squad - 09:48 AppyBuilder Community - 09:53 Goodbye - 10:00 DOWNLOAD PROJECT .aia FILE: http://community.appybuilder.com/t/high-score-leaderboard-using-fusion-table-as-the-database/8528 FACEBOOK PAGE: https://www.facebook.com/pixiibomb PATREON PAGE: https://www.patreon.com/pixiibomb AppyBuilder: http://appybuilder.com/ AppyBuilder Community: http://community.appybuilder.com/ FREE RESOURCES Although I do create a lot of my images, to save time in Tutorials or quick projects, I like to use a free resource sites. My favorites are: http://www.freepik.com/ http://www.flaticon.com/ [thumbnails] => Array ( [default] => Array ( [url] => https://i.ytimg.com/vi/xOCI9viNun8/default.jpg [width] => 120 [height] => 90 ) [medium] => Array ( [url] => https://i.ytimg.com/vi/xOCI9viNun8/mqdefault.jpg [width] => 320 [height] => 180 ) [high] => Array ( [url] => https://i.ytimg.com/vi/xOCI9viNun8/hqdefault.jpg [width] => 480 [height] => 360 ) [standard] => Array ( [url] => https://i.ytimg.com/vi/xOCI9viNun8/sddefault.jpg [width] => 640 [height] => 480 ) [maxres] => Array ( [url] => https://i.ytimg.com/vi/xOCI9viNun8/maxresdefault.jpg [width] => 1280 [height] => 720 ) ) [channelTitle] => Pixii Bomb [type] => upload ) [contentDetails] => Array ( [upload] => Array ( [videoId] => xOCI9viNun8 ) ) ) youtube#activity"ZG3FIn5B5vcHjQiQ9nDOCWdxwWo/9bAEAi43B5b3tiYpW1BAPw2aZ54"VTE1MjQwOTM0MjI5NDIyNjY4MzQ2NjUxMg==

Если я попробую foreach($json['items'][0] as $key=>$value){ echo $value; }

Потом получаю: Примечание: преобразование массива в строку <- Не то, что я хочу

Я хочу что-то вроде

echo $json['items']['snippet']['title'];

(Но, конечно, это не работает)

Возможный дубликат Справка - что означает эта ошибка в PHP?

Spoody 23.04.2018 01:39

в массиве items иногда $value представляет собой массив или объект, в зависимости от того, как вы его json_decode. Об этом сообщает сообщение об ошибке. Вы можете попробовать что-то вроде элементов foreach, а затем получить доступ к фрагменту по своему усмотрению.

Félix Gagnon-Grenier 23.04.2018 02:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
339
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы просто ищете echo $json['items'][0]['snippet']['title'];.

Если вы хотите перебрать их, это можно сделать с помощью array_walk():

function myfunction($value, $key)
{
    echo "The key $key has the value $value<br />";
}

array_walk($json, "myfunction");

Также обратите внимание, что ваши две строки:

echo $json['kind']."<p>".$json['etag']."<p>".$json['nextPageToken']."<p>";
echo $json['pageInfo']['totalResults']."<p>".$json['pageInfo']['resultsPerPage'];

Недействительный HTML; у вас не может быть тега <p>, вложенного в другой тег <p>; не забудьте закрыть их с помощью </p>.

Да спасибо! Это то, что я искал, и не могу поверить, что даже не подумал об этом. Я чувствую себя сумасшедшим. Что касается вашего второго примечания, я ценю это и да, я в курсе. Я просто выкидываю тестовый код (не особо беспокоюсь о том, чтобы все было идеально)

Nicholette Liguori 23.04.2018 01:42

@NicholetteLiguori примите этот ответ, если это помогло вам решить вашу проблему, отметьте галочкой, если он решен

Kevin 23.04.2018 03:01

Ах да, остальное я тоже понял. Ty

Nicholette Liguori 23.04.2018 03:16

Другие вопросы по теме