2011-07-02 23 views
1

私は音楽トラックをループする配列を持っていますが、配列の最後の要素からコンマを削除する必要があります。配列の最後の要素にカンマを取り除く

<?php foreach ($bucket_contents as $file){ $fname = $file['name']; $furl = "http://".$isdHtml5Bucket.".s3.amazonaws.com/".urlencode($fname); 

if(preg_match("/\.mp3$/i", $furl)) { ?> 
    { 
      name:"<?php echo basename($fname); ?>", 
      mp3:"<?php echo $furl; ?>" 

     }, 
<?php }else{ ?> 
     { 
      name:"<?php echo basename($fname); ?>", 
      m4a:"<?php echo $furl; ?>" 

     },<?php } } ?> 

ここに配列の出力があります。

{ 
     name:"bassline", 
     m4a:"http://suyssamuelarawaeast.s3.amazonaws.com/warehouse%2Fbassline%2F" 

    }, 
    { 
     name:"Project Bassline - Drop The Pressure (Jack Beats Rinsed Out Remix).mp3", 
     mp3:"http://suyssamuelarawaeast.s3.amazonaws.com/warehouse%2Fbassline%2FProject+Bassline+-+Drop+The+Pressure+%28Jack+Beats+Rinsed+Out+Remix%29.mp3" 

    }, 
     { 
     name:"deadmau5 vs jelo the reward is cheese.mp3", 
     mp3:"http://suyssamuelarawaeast.s3.amazonaws.com/warehouse%2Fdeadmau5+vs+jelo+++the+reward+is+cheese.mp3" 

    }, 
    { 
     name:"vocal", 
     m4a:"http://suyssamuelarawaeast.s3.amazonaws.com/warehouse%2Fvocal%2F" 

    },  
      { 
     name:"Thin Ice", 
     free:true, 
     mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3", 
     oga:"http://www.jplayer.org/audio/ogg/Miaow-10-Thin-ice.ogg" 
    }, 

アレイの最後の要素までスクロールすると、カンマが出力されていることがわかります。 本当にこのコンマを配列の最後の要素から削除する必要があります。

おかげ

+2

コード – KingCrunch

+1

を適切な方法でフォーマットしてください。 –

+0

また、著作権者の許可を得ることを願っています! –

答えて

7

rtrim()を通して、あなたの文字列を渡すと、取り外し可能な文字としてCHARLISTにカンマを指定します。

$str = rtrim($str, ','); 

編集

それとも...多分、このアプローチは(テストしていません):

$songs = array(); 

foreach ($bucket_contents as $file) { 

    $fname = $file['name']; 
    $furl = "http://".$isdHtml5Bucket.".s3.amazonaws.com/".urlencode($fname); 

    $type = preg_match("/\.mp3$/i", $furl) ? 'mp3' : 'm4a'; 
    $songs[] = sprintf('{ name: %s, %s: %s }', $fname, $type, $furi); 
} 

echo implode(',', $songs); 
+0

文字列を作成するのではなく、直接出力しているので、文字列を作成するためにコードを変更するか、出力バッファリングを使用して出力を戻す必要があります。 'と再出力します。 – Orbling

+0

フェアポイント。異なるアプローチが追加されました。 –

+1

+1空白をフォーマットしたくない場合は、ニースアプローチ。 – Orbling

0

編集:コードをクリーンアップしました。これは、他の答えと同様に、一時配列を使用しません。

最終出力ブロックには印刷していないフィールドがあるので、そのコードがその出力をどのように生成するかわかりません。それはさておき、このようなものは、あなたが(未テスト)欲しいものはおそらくです:あなたが行くあり

<?php 

$comma = ''; 
foreach ($bucket_contents as $file) { 
    $fname = $file['name']; 
    $furl = "http://".$isdHtml5Bucket.".s3.amazonaws.com/" . urlencode($fname); 
    $ext = preg_match("/\.mp3$/i") ? "mp3" : "m4a"; 

    printf('%s{\nname:"%s",\n%s:"%s"\n}', $comma, $fname, $type, $furi); 
    $comma = ",\n"; 
} 
?> 
+0

最後にコンマが残っています。 – Neddy

+0

@Neddy:いいえ、1番目のブロックを除く各ブロックの前にコンマが印刷されます。 – Pianosaurus

+0

ああ、はい:).... – Neddy

0
<?php 

foreach($bucket_contents as $file){ 
    $fname = $file['name']; 
    $furl = "http://".$isdHtml5Bucket.".s3.amazonaws.com/".urlencode($fname); 
    $ext = preg_match("/\.mp3$/i") ? "mp3" : "m4a"; 

    $t[] = '{name:"'.basename($fname).'",'.$ext.':"'.$furl.'"}'; 
} 

echo implode(',',$t); 

。非常に良い:)

関連する問題