除了最后一个值之外,回显逗号? (来自mysql_fetch_array的结果)

时间:2011-11-29 14:25:41

标签: php

如何在除最后一个值之外的所有内容上回显逗号?这是我的代码:

while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {

    ECHO $servdescarrayrow['serv_desc'].",";
}

不应该这样做:

$i = 0;

while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {

    $count = count($servdescarrayrow);
    if ($i < $count) {
    echo $servdescarrayrow['serv_desc'].",";
    $i++;
    }
    else {
        break;
    }
}

11 个答案:

答案 0 :(得分:9)

另一种选择:

$values = array();
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
    $values[] = $servdescarrayrow['serv_desc'];
}

echo implode(',', $values);

答案 1 :(得分:4)

$count = 0;
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
    if ($count++ > 0) echo ",";
    echo $servdescarrayrow['serv_desc'];
}

答案 2 :(得分:2)

尝试在输出中使用rtrim。例如:

$output = '';

while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {    
    $output .= $servdescarrayrow['serv_desc'].",";
}

echo rtrim($output, ',');

答案 3 :(得分:1)

你可以在生成字符串之后删除最后一个逗号:

$str = '';
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
   $str .= $servdescarrayrow['serv_desc'].",";
}
$str = substr($str, 0, strlen($str) - 1);
echo $str;

答案 4 :(得分:1)

$array = array();
while ($servdescarrayrow = mysql_fetch_array($servdescarray))
    $array[] = $servdescarrayrow['serv_desc'];
ECHO implode(',', $array);

答案 5 :(得分:0)

$started = null;
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) 
{
  ECHO $started.$servdescarrayrow['serv_desc'];
  if ( ! isset($started))
  {
    $started = ",";
  }
}

答案 6 :(得分:0)

这是一种可能的方式。不是很优雅,但做的工作是:

$Ix = 0;
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
    if ($Ix > 0)
        echo ",";
    $Ix++;
    echo $servdescarrayrow['serv_desc'];
}

答案 7 :(得分:0)

这应该有效:

$i = 0;
$c = mysql_num_rows ( 
while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
    $i++;
    if ( $i < mysql_num_rows ) echo $servdescarrayrow['serv_desc'].",";
    else echo $servdescarrayrow['serv_desc'];
}

答案 8 :(得分:0)

为什么不:

if ($servdescarryrow = mysql_fetch_array($servdescarray)) {
    echo $servdescarryrow;
}

while ($servdescarrayrow = mysql_fetch_array($servdescarray)) {
    ECHO ",".$servdescarrayrow['serv_desc'];
}

答案 9 :(得分:0)

$out = $mydb->getOne("SELECT group_concat(serv_desc) FROM table");

其中$ mydb是数据库类,getOne()是返回第一行第一列的辅助函数,group_concat()输出限制为1024字节,但可以通过设置适当的变量来更改。

但是当然这个网站的普通爱好者总是会使用通用PHP来完成这样的任务,因为没有人会告诉他有更聪明的方法。

答案 10 :(得分:0)

我想知道为什么第一个问题有十几个答案,没有人回答编辑过的部分。

不,它应该不起作用。因为$ servdescarrayrow变量只代表一个行,所以整个代码没有任何意义。

虽然可以返回记录的数量纳入流程并获得所需结果,但我怀疑你真的需要它。

更不用说回音的方式,无论如何你总是会有逗号。