Получить значение licensedContent на Youtube Api - PHP - PullRequest
0 голосов
/ 01 ноября 2018

Стремясь получить согласованные результаты поиска музыки с помощью API YouTube, я использовал отдельный лицензионный контент для нелицензионного.

Json от вызова это:

{
 "kind": "youtube#videoListResponse",
 "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/Y0E2MZ3qwZc8Z7rZDINIYA1uY0I\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 1
 },
 "items": [
  {
   "kind": "youtube#video",
   "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/Xup77LEmvulitH-oe1DkTBPumV4\"",
   "id": "plIZho8Nd2g",
   "contentDetails": {
    "duration": "PT4M34S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "true",
    "licensedContent": false,
    "projection": "rectangular"
   }
  }
 ]
}

Но я не могу достичь значения в цикле PHP foreach. Что-то не так с моим кодом?

<?php

$api = "MY API KEY";

$link2 = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=plIZho8Nd2g&key=" . $api;

$video2 = file_get_contents($link2);

$video2 = json_decode($video2, true);


foreach ($video['items'] as $data) {
    foreach ($data['contentDetails'] as $data2) {
        $licensed = $data2['licensedContent'];

        echo $licensed . "<br>";


    }

}

?>

1 Ответ

0 голосов
/ 01 ноября 2018

Вы должны получать некоторые предупреждения, которые помогут вам решить эту проблему. Есть несколько небольших проблем:

  1. Опечатка: foreach ($video['items'] as $data) { - $video должна быть $video2

  2. contentDetails - это объект, а не массив. Таким образом, выполняя цикл foreach, вы просматриваете каждое имя свойства в отдельности. Поэтому ни одно из свойств не будет содержать licensedContent. Один из них будет licensedContent, но, поскольку мы знаем, что хотим этого, мы можем просто получить к нему прямой доступ.

  3. Так как licensedContent (и с расширением $licensed) является логическим значением и имеет значение false, echo фактически не выведет ничего видимого - это извращение команды echo в PHP , Мы можем исправить это, проверив значение и затем отобразив соответствующую строку.

Соберите все это вместе, и вот что вы получите:

foreach ($video2['items'] as $data) {
    $licensed = $data['contentDetails']['licensedContent'];
    echo ($licensed == false ? "false" : "true")."<br/>";
}

Демонстрация здесь: http://sandbox.onlinephpfunctions.com/code/7ca09960ec3e86ccb4bd49038ad851c3c93ef5de

...