在Youtube阿比达到licensedContent值 - PHP(Reach licensed

2019-10-29 18:47发布

在努力向YouTube API一致的音乐搜索的回报,我使出分离内容授权给非行货之一。

从呼叫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>";


    }

}

?>

Answer 1:

你应该得到一些警告,这将有助于你解决这个问题。 有几个小问题:

  1. 错字: foreach ($video['items'] as $data) { - $video应该是$video2

  2. contentDetails是一个对象,而不是阵列。 因此,通过在其上做一个foreach循环你通过每个属性的名称单独循环。 因此任何属性都将包含 licensedContent 。 其中之一将 licensedContent ,但因为我们知道我们想要的那一个,我们就可以直接访问它。

  3. 由于licensedContent (通过扩展$licensed )是一个布尔值,并设置为falseecho实际上不会输出任何可见的-这是在PHP中echo命令的怪癖。 我们可以通过检查值,然后呼应适当的字符串修复它。

把所有的一起,这是你会得到什么:

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

这里现场演示: http://sandbox.onlinephpfunctions.com/code/7ca09960ec3e86ccb4bd49038ad851c3c93ef5de



文章来源: Reach licensedContent value on Youtube Api - PHP