首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:结果集中最后一条记录的条件输出

PHP:结果集中最后一条记录的条件输出
EN

Stack Overflow用户
提问于 2011-12-21 13:54:33
回答 4查看 697关注 0票数 0

我有一些PHP脚本查询mysql数据库并回显出一段javascript。一切都运行得很好,除了在回显查询的最后一行之后,我不想在结束括号后回显逗号。脚本的结果应如下所示,最后一行不以逗号结尾。

代码语言:javascript
复制
        {title: 'title1', url: 'mp3:mp3-1', start: 660, duration: 398},
        {title: 'title2', url: 'mp3:mp3-2', start: 464, duration: 32},
        {title: 'title3', url: 'mp3:mp3-3', start: 2956, duration: 139},
        {title: 'title4', url: 'mp3:mp3-4', start: 653, duration: 62},
        {title: 'title5', url: 'mp3:mp3-5', start: 1816, duration: 74}

正如我现在的代码一样,最后一行得到一个逗号,就像它之前的行一样,它破坏了我生成的javascript代码(当然,只在IE中!!)。我假设答案与计算剩下的行数有关,如果它大于1 echo一件事,如果它等于1 echo另一件事,我只是不确定如何将其转换为PHP代码。谢谢你的帮助。

循环的代码如下所示:

代码语言:javascript
复制
<?php
    foreach($_SESSION['section_remember'] as $key =>$value)
    {   

    $sql = "SELECT `section`.`start`,`section`.`stop`,`section`.`title`,`daily_show`.`audio_file`
                FROM `section`
                INNER JOIN `daily_show`
                ON `section`.`daily_show_id` = `daily_show`.`id`
                WHERE `section`.`id` = $value";
    $result = mysql_query($sql);


    while ($query = mysql_fetch_array($result))
    {
        $id = $query['id'];
        $start = $query['start'];
        $stop = $query['stop'];
        $title = $query['title'];
        $audio =$query['audio_file'];
        $duration =$stop-$start;

        echo"{title: '",$title;
        echo"', ";
        echo"url: 'mp3:",$audio;
        echo"', ";
        echo"start: ",$start;
        echo", ";
        echo"duration: ",$duration;
        echo"}, ";              
    }
    }
    ?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-21 14:13:52

无需跟踪您是否在最后一行,只需使用rtrim修剪尾随的逗号即可。trim中的所有PHP函数(trim、ltrim、rtrim)都有第二个参数$charlist,您可以在该参数中指定要修剪的字符。

代码语言:javascript
复制
ob_start(); // use output buffering or append to a string variable
while ($query = mysql_fetch_array($result))
{
    $id = $query['id'];
    $start = $query['start'];
    $stop = $query['stop'];
    $title = $query['title'];
    $audio = $query['audio_file'];
    $duration = $stop-$start;

    printf('{"title":"%s", "url":"mp3:%s", "start":%d, "duration":%d},',
        $title,
        $audio,
        intval($start),
        intval($duration)
        );
}
echo rtrim(ob_get_clean(), ', ');
票数 2
EN

Stack Overflow用户

发布于 2011-12-21 13:58:10

我认为你在正确的轨道上。从该查询中获取行数。for每行,递增一个从零开始的计数器。if行数和计数器不相等,请打印带有逗号的行。else,打印一行不带逗号。祝好运!

票数 2
EN

Stack Overflow用户

发布于 2011-12-21 14:06:58

逗号可以放在循环的顶部,而不是底部;这样,您就可以确定至少有一行要处理:

代码语言:javascript
复制
$count = 0;
while ($query = mysql_fetch_array($result))
{
    echo $count++ > 0 ? "," : ""; // notice the use of post-increment operator
    echo"{";
    echo"}";              
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8585624

复制
相关文章

相似问题

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