2012-07-06 101 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 ? ',' : ''); 
} 
相關問題