2012-12-07 111 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++; 
    } 
?> 
相關問題