0

JW Player プレイリストを設定するために、YouTube ビデオの特定のリストを循環する foreach を作成しようとしています。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

試す:

<?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 に答える
0

count(); で配列の要素数を取得します。これで、すべての foreach ループが最後のものであるかどうかをチェックインして、ブラケットを追加できます!

于 2012-12-07T22:21:53.230 に答える