2012-12-07 38 views
0

我正在尝试创建一个foreach,它将循环播放给定的YouTube视频列表以填充JW Player播放列表。 JW Player的语法结构允许包含多个视频来构建一个播放列表,但是当它到达最终项目以便关闭播放列表配置时,我需要闯入foreach。将字符串附加到最后一个foreach项目

不用时动态生成的JW球员语法如下这样:

<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> 

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

回答

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> 
+0

不幸的是我不能得到这个工作?我试图完全按照上面的方式复制和粘贴代码,但它完全禁用了播放器。 –

+0

在查看html源代码时实际输出了json_encode吗?也许短标签没有启用,你需要 <?php echo json_encode($ playlist);?> –

+0

这是完美的,我使用了完整的标签,它被直接发现。感谢您的帮助,非常感谢! –

0

用count()获取数组中元素的个数; 现在你可以检查每个foreach循环,如果它是最后一个,并且可以添加你的支架!

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++; 
    } 
?> 
相关问题