将字符串附加到最后一个foreach项目

时间:2012-12-07 22:17:56

标签: php arrays foreach jwplayer

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

非常感谢任何帮助。谢谢!

3 个答案:

答案 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++;
    }
?>