2012-07-06 97 views
5

我上incorperating的jplayer HTML5音频播放列表PHP对于每个逗号分隔符,除了最后

工作我使用一个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" 

    } 

任何人都可以点我在正确的方向?

+1

你为什么不只是'json_encode'呢? – Gordon 2012-07-06 06:46:54

回答

11

我用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 
    } 
} 
+0

a)'foreach'遍历数组的副本,并且b)'next()'移动光标。行,但它不起作用,因为你认为它起作用;)事实上,你一次迭代两个(相同的)数组,当你意识到你停止了,你停止了第二个。 – KingCrunch 2012-07-06 07:44:48

+0

哦...更新:它不完全工作http://codepad.org/qTmlyDwU – KingCrunch 2012-07-06 07:53:10

+0

@KingCrunch,谢谢。查看我的编辑。 – pltvs 2012-07-06 07:54:42

2

还可以做什么,是不是直接呼应它的浏览器,它存储在一个字符串第一。

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

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

4

你的意思是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); 

只是为了让它完成:一个for - 溶液

for ($n = count($array), $i = 0; $i < $n; $i++) { 
    echo sprintf('{title:"%s",mp3:"%s"}', $array[$i]['title'], $array[$i]['mp3']) 
    . ($i < $n-1 ? ',' : ''); 
} 
相关问题