首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php for each,除last外,使用逗号分隔符

php for each,除last外,使用逗号分隔符
EN

Stack Overflow用户
提问于 2012-07-06 14:28:53
回答 3查看 16.4K关注 0票数 8

我正在处理jplayer html5音频播放列表。

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

这就是我到目前为止用来生成jplayer播放列表的东西。

代码语言:javascript
运行
复制
<?php foreach( $songs as $song ): if( !empty($song) ): ?>{

        title:"Each Song Title",

        mp3:"Each song mp3 url"

    },<?php endif; endforeach; ?>

这给了我

代码语言:javascript
运行
复制
    {

        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"

    },

这就是我想要的结果

代码语言:javascript
运行
复制
    {

        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"

    }

有谁能给我指个方向吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-06 14:32:17

我使用next()

代码语言:javascript
运行
复制
$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
    }
}
票数 21
EN

Stack Overflow用户

发布于 2012-07-06 14:54:29

你是说JSON?

代码语言:javascript
运行
复制
echo json_encode($array);

您也可以改用数组函数

代码语言:javascript
运行
复制
// 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

代码语言:javascript
运行
复制
for ($n = count($array), $i = 0; $i < $n; $i++) {
  echo sprintf('{title:"%s",mp3:"%s"}', $array[$i]['title'], $array[$i]['mp3'])
    . ($i < $n-1 ? ',' : '');
}
票数 5
EN

Stack Overflow用户

发布于 2012-07-06 14:43:23

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

代码语言:javascript
运行
复制
<?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;
 ?>

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11356957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档