我目前正在尝试从我在youtube上创建的播放列表中提取标题和视频ID。
我正在使用youtube api v3
以json格式获取播放列表结果。
我可以提取我需要的信息,但由于某种原因,结果没有按预期回复。
例如,我在此播放列表上有三个视频作为测试,当我查看json结果时,它还列出了3个项目。
但是,当我使用以下代码列出项目时,前两个项目每行连续4次列出,最后一项列出一次。
P.S我遗漏了$url
,因为这不是我问题的原因。
$result77 = file_get_contents($url);
$YTapiJSON = json_decode($result77, TRUE);
foreach ($YTapiJSON['items'] as $key){
foreach ($key as $key2) {
foreach ($key2 as $key3) {
$title = $key2['title'];
$key4 = $key2['resourceId']['videoId'];
}
if(!empty($key4)) {
echo $title. "Added " .$key4. "<br>";
}
}
}
答案 0 :(得分:0)
而不是这么多的foreach循环,我使用了几个array_column()
这样的调用:(Demo)
$titles=array_column(array_column(json_decode($json,true)['items'],'snippet'),'title');
var_export($titles);
首先将json转换为数组,然后访问items
子数组,然后收集snippet
子数组,然后从中收集title
个值。
输出:
array (
0 => 'test title 1',
1 => 'test title 2',
2 => 'test title 3',
)
如果您想要title
和videoId
,那么您可以使用此代码:
$snippets=array_column(json_decode($json,true)['items'],'snippet');
foreach($snippets as $a){
echo $a['title'],(!empty($a['resourceId']['videoId'])?" Added: {$a['resourceId']['videoId']}":''),"\n";
}
这是Demo,我已修改第二个视频的videoId(使其为空)以实现效果。
输出:
test title 1 Added: Da8-QfGemgo
test title 2
test title 3 Added: 5lvkwZZZmGc