使用PHP创建动态播放列表

时间:2012-02-27 22:23:12

标签: php wordpress media-library

我的wordpress主题中有一个播放列表脚本,它将媒体库中文件的URL放入播放列表脚本中,可由音频播放器读取。

<script type="text/javascript">
var myPlaylist = [
 <?php
 foreach ($audiofiles as $file)
 {
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    },"
; }
?>
];
</script>

我的问题是我需要弄清楚如何在LAST项目上更改php脚本的输出,以便在“}”之后没有逗号。我被告知这是一个AJAX问题,但我不知道从哪里开始。

4 个答案:

答案 0 :(得分:0)

尝试以下方法:

<?php
 $playlist = array();
 foreach ($audiofiles as $file)
 {
   $playlist[] = "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }";
 }
?>
<script type="text/javascript">
var myPlaylist = [
 <?php echo implode(',' $playlist);?>
];
</script>

答案 1 :(得分:0)

将对象从PHP传递给JS时,最安全,最简单的方法是使用json_encode。这样,如果$file->post_title包含'或任何其他会破坏它的字符,您就不必担心破坏JS语法。

<?php
 $playlist = array();
 foreach ($audiofiles as $file)
 {
   $playlist[] = array(
        'mp3'=>$file->guid,
        'title'=>$file->post_title,
        'artist'=>'',
        'rating'=>5,
        'buy'=>$file->post_excerpt,
        'price'=>'',
        'duration'=>'',
        'cover'=>''
    );
  }
?>

<script type="text/javascript">
  var myPlaylist = <?= json_encode($playlist) ?>;
</script>

答案 2 :(得分:0)

假设$audiofiles是关联数组,你试过这个:

<?php
 $totalFiles = count($audiofiless);
 $i = 0;
 foreach ($audiofiles as $file)
 {
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }" . (++$i < $totalFiles ? ',' : '');
; }
?>

但是,如果它不是一个关联,那么它甚至更简单,因为你不必增加任何东西,你可以使用普通的for循环......

答案 3 :(得分:0)

您可以将foreach更改为for并执行以下操作:

<script type="text/javascript">
var myPlaylist = [
 <?php
 for ($i=0; $i<=$audiofile.length; $i++)
 {
   $file = $audiofile[$i];
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }"
    if ($i<$audiofile.length)
    {
      echo ","
    }
; }
?>
];
</script>