我知道这个问题一直存在很多疑问。我似乎可以找到解决方案。如果这是简单的话,请原谅我。
问题是如何访问while循环的结束。
E.g。
while($countByMonth = mysql_fetch_array($countByMonthSet)) {
$c = $countByMonth["COUNT(id)"];
echo $c . "," ;
}
如何通过逗号分隔while循环的每个值,但当然我不希望逗号位于值的末尾。
事先感谢你的帮助:)
答案 0 :(得分:6)
你可以:
1)构建一个字符串,并删除最后一个字符:
$c = '';
while ($countByMonth = mysql_fetch_array($countByMonthSet)) {
$c .= $countByMonth["COUNT(id)"] . ',';
}
$c = substr($c, 0, -1);
echo $c;
2)构建一个数组并使用implode()
$c = array();
while ($countByMonth = mysql_fetch_array($countByMonthSet)) {
$c[] = $countByMonth["COUNT(id)"];
}
echo implode(',', $c);
提示:您可以在查询中使用别名,例如:SELECT COUNT(id) as count FROM ...
。然后你可以$countByMonth['count']
访问它,看起来更清洁IMO。
答案 1 :(得分:5)
简单的 1 解决方案:
$isFirst = true;
while($countByMonth = mysql_fetch_array($countByMonthSet)) {
$c = $countByMonth["COUNT(id)"];
if ($isFirst) {
$isFirst = false;
} else {
echo = ', ';
}
echo $c;
}
或者,你可以implode()
这些值。或者 - 也许更容易阅读/理解/维护 - 将它全部连接成一个字符串并删除最后一个“,
”(这样我的空格;字符串是逗号 - 空格):
$list = '';
while($countByMonth = mysql_fetch_array($countByMonthSet)) {
$c = $countByMonth["COUNT(id)"];
$list .= $c . ', ';
}
echo substring($list, 0, -2); // Remove last ', '
(其他几个答案建议使用累积数组,然后使用implode()
。从性能角度来看,这种方法优于字符串连接。)
1 见评论。
答案 2 :(得分:3)
或者你可以这样做:
$arr = array();
while($countByMonth = mysql_fetch_array($countByMonthSet)) {
$arr[] = $countByMonth["COUNT(id)"];
}
echo implode(', ',$arr);
答案 3 :(得分:2)
或者之后只需用rtrim($ c,',')
修剪它答案 4 :(得分:0)
虽然我认为内爆解决方案可能是最好的,但在不能使用内爆的情况下,请考虑不同的基本算法。而不是“除了最后一个元素,我怎么能在每个元素后面添加一个逗号?”问问自己“除了第一个元素之外,我怎样才能在每个元素之前添加一个逗号?”
$str = '';
$count = count( $array );
if( $count ) {
$i = 0;
$str = $array[$i];
$i++;
while( i < $count ) {
$str .= ','.$array[$i];
$i++;
}
}
如果你“移动”第一个元素,那么你可以使用foreach循环:
$str = '';
if( count( $array ) ) {
$str = array_shift( $array );
foreach( $array as $element ) {
$str .= ', '.$element;
}
}
答案 5 :(得分:-2)
Ty this:
int count;//
while(i)
{
count=i;
}