2011-07-02 57 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

由于他直接输出,而不是创建一个字符串,他可能需要改变他的代码来创建一个字符串或使用输出缓冲来获得输出,然后'rtrim() '并重新输出。 – 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:不,这个逗号印在每个块的前面,除了第一个。 – 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); 

你去那里。更好:)