我有一些PHP脚本查询mysql数据库并回显出一段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代码。谢谢你的帮助。
循环的代码如下所示:
<?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"}, ";
}
}
?>发布于 2011-12-21 14:13:52
无需跟踪您是否在最后一行,只需使用rtrim修剪尾随的逗号即可。trim中的所有PHP函数(trim、ltrim、rtrim)都有第二个参数$charlist,您可以在该参数中指定要修剪的字符。
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(), ', ');发布于 2011-12-21 13:58:10
我认为你在正确的轨道上。从该查询中获取行数。for每行,递增一个从零开始的计数器。if行数和计数器不相等,请打印带有逗号的行。else,打印一行不带逗号。祝好运!
发布于 2011-12-21 14:06:58
逗号可以放在循环的顶部,而不是底部;这样,您就可以确定至少有一行要处理:
$count = 0;
while ($query = mysql_fetch_array($result))
{
echo $count++ > 0 ? "," : ""; // notice the use of post-increment operator
echo"{";
echo"}";
}https://stackoverflow.com/questions/8585624
复制相似问题