8

我正在合并 jplayer html5 音频播放列表

我正在使用 foreach 为每个播放列表项生成脚本元素。一切都按预期工作,除了我在循环中包含了逗号,但我需要一种方法将逗号写为除最后一项之外的分隔符。

这是我到目前为止生成 jplayer 播放列表的内容。

<?php foreach( $songs as $song ): if( !empty($song) ): ?>{

        title:"Each Song Title",

        mp3:"Each song mp3 url"

    },<?php endif; endforeach; ?>

这给了我

    {

        title:"Partir",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-09-Partir.mp3"

    },

    {

        title:"Thin Ice",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },
    {

        title:"Ice man",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },

这是我想要的结果

    {

        title:"Partir",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-09-Partir.mp3"

    },

    {

        title:"Thin Ice",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },
    {

        title:"Ice man",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    }

谁能指出我正确的方向?

4

3 回答 3

22

我使用next()

$arr = array(1,2,3,4,5,6,7);
$copy = $arr;
foreach ($arr as $val) {
    echo $val;
    if (next($copy )) {
        echo ','; // Add comma for all elements instead of last
    }
}
于 2012-07-06T06:32:16.627 回答
5

你是说JSON?

echo json_encode($array);

您也可以使用数组函数

// Create single items first
$array = array_map(
  function ($item) {return sprintf(
      '{title:"%s",mp3:"%s"}',
      $item['title'],
      $item['mp3']
  );},
  $array
);
// Then concatenate
echo implode(',' $array);

只是为了让它完整:A for-solution

for ($n = count($array), $i = 0; $i < $n; $i++) {
  echo sprintf('{title:"%s",mp3:"%s"}', $array[$i]['title'], $array[$i]['mp3'])
    . ($i < $n-1 ? ',' : '');
}
于 2012-07-06T06:54:28.820 回答
4

您还可以做的不是直接将其回显到浏览器,而是先将其存储在字符串中。

<?php 
$string = "";
foreach( $songs as $song ) { 
    if( !empty($song) )
    { 
        $string .= '
    {

        title:"Each Song Title",

        mp3:"Each song mp3 url"

    },

    ';
    }
 }
 $string = substr($string, 0, -1); //Removes very last comma.
 echo $string;
 ?>

如果需要,这也允许它在整个代码的其他地方使用。

于 2012-07-06T06:43:22.657 回答