JSON Извлечение данных в переменную с использованием переполнения стека

Я использую запрос API данных YouTube, чтобы получить идентификатор канала, но я не очень уверен, почему он не работает:

Возвращаемый запрос JSON, который я получаю:

{
"kind": "youtube#channelListResponse",
"etag": "\"PSjn-HSKiX6orvNhGZvglLI2lvk/k5qSWj-xcF96jAN3p1uQH1amSRc\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 5
},
"items": [
{
"kind": "youtube#channel",
"etag": "\"PSjn-HSKiX6orvNhGZvglLI2lvk/e1xTbLf6JLhwwzeWbdMfWdPfcwg\"",
"id": "UC-lHJZR3Gqxm24_Vd_AJ5Yw"}
]
}

Чтобы извлечь данные JSON, я использую несколько строк кода и функцию в php:

$banner_data = file_get_contents('https://www.googleapis.com/youtube/v3/channels?part=brandingSettings&forUsername=pewdiepie&key=AIzaSyDTxvTLWXStUrhzgCDptVUG4dGBCpyL9MY');
$banner_data = json_decode($banner_data, true);
$YTid = $banner_data['items']['id'];

Когда я :

echo "YouTube Channel Id Of pewdiepie is " . $YTid . ".<br />";

Я не получаю идентификатор канала? В чем моя проблема?

0

Решение

Items — это массив, содержащий один или несколько объектов. Так и должно быть:

 $YTid = $banner_data['items'][0]->id;

Таким образом вы получаете ‘id’ из первого элемента в массиве items.

Кстати: обучение отладке имеет решающее значение для обучения коду. Если вы декодируете json, а затем выводите результат, вы можете увидеть структуру массива, которая могла бы помочь вам найти проблему, например:

$banner_data = json_decode($banner_data, true);
var_dump($banner_data);
1

Другие решения

Попробуйте это вместо этого:

    $YTid = $banner_data['items'][0]['id'];
1

По вопросам рекламы [email protected]