0

我正在尝试创建一个 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>

给予的任何帮助将不胜感激。谢谢!

4

3 回答 3

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>
于 2012-12-07T22:28:55.830 回答
0

使用 count() 获取数组中的元素个数;现在您可以检查每个 foreach 循环是否是最后一个循环,并且可以添加您的括号!

于 2012-12-07T22:21:53.230 回答
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++;
    }
?>
于 2012-12-07T22:26:17.413 回答