Я использую запрос 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 />";
Я не получаю идентификатор канала? В чем моя проблема?
Items — это массив, содержащий один или несколько объектов. Так и должно быть:
$YTid = $banner_data['items'][0]->id;
Таким образом вы получаете ‘id’ из первого элемента в массиве items.
Кстати: обучение отладке имеет решающее значение для обучения коду. Если вы декодируете json, а затем выводите результат, вы можете увидеть структуру массива, которая могла бы помочь вам найти проблему, например:
$banner_data = json_decode($banner_data, true);
var_dump($banner_data);
Попробуйте это вместо этого:
$YTid = $banner_data['items'][0]['id'];