我正在尝试创建一个foreach,它将遍历给定的YouTube视频列表,以便填充JW Player播放列表。 JW Player语法的结构允许包含多个视频来构建播放列表,但是当它到达最终项目以便关闭播放列表配置时我需要进入foreach。
当没有动态生成时,JW Player语法看起来如此:
<div id='player_1465'></div>
<script type='text/javascript'>
jwplayer("player_1465").setup({
height: 360,
listbar: {
position: 'right',
size: 320
},
width: 960,
playlist: [{
sources: [
{ file: "http://www.youtube.com/watch?v=DeumyOzKqgI" }
],
title: "Skyfall Lyric Video"
},{
sources: [
{ file: "http://www.youtube.com/watch?v=diP-o_JxysA" }
],
title: "Star Trek Into Darkness Announcement Trailer"
}]
});
</script>
正如您所看到的,播放列表中的每个“来源”都以'},{'关闭,最后一个以'}结尾''。我需要foreach知道它何时加载了给定数组中的最终视频,然后用'}]'关闭播放列表部分。
到目前为止,我已经使用了动态生成的代码:
$clips = $tmdb->getMovieTrailers($tmdb_id);
<div id='player_1465'></div>
<script type='text/javascript'>
jwplayer("player_1465").setup({
height: 360,
listbar: {
position: 'right',
size: 320
},
width: 960,
playlist: [{
<?php
foreach($clips['youtube'] as $yt){
echo 'sources: [
{ file: "http://www.youtube.com/watch?v=' . $yt['source'] . '" }
],
title: "' . $yt['name'] . '"
}]'
}
?>
}]
});
</script>
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
你应该考虑使用json_encode。
<?php
$clips = $tmdb->getMovieTrailers($tmdb_id);
$playlist = array();
foreach($clips['youtube'] as $yt) {
$playlist[] = array(
'sources' => array(array('file' => 'http://www.youtube.com/watch?v=' . $yt['source'])),
'title' => $yt['name']
);
}
?>
<div id='player_1465'></div>
<script type='text/javascript'>
jwplayer("player_1465").setup({
height: 360,
listbar: {
position: 'right',
size: 320
},
width: 960,
playlist: <?=json_encode($playlist)?>
});
</script>
答案 1 :(得分:0)
使用count()获取数组中的元素数量; 现在你可以检查每个foreach循环,如果它是最后一个,可以添加你的括号!
答案 2 :(得分:0)
尝试:
<?php
$c = 0;
foreach($clips['youtube'] as $yt){
echo 'sources: [
{ file: "http://www.youtube.com/watch?v=' . $yt['source'] . '" }
],
title: "' . $yt['name'] . '"';
if($c = count($clips['youtube'])){
echo '}]';
} else {
echo '},{';
}
$c++;
}
?>