排除php数组中的最后一个逗号


Exclude last comma in php array

我有一个简单的数据库连接:

$rowdata = mysql_query("SELECT * FROM table_names");
        while($row = mysql_fetch_array($rowdata)) {
        echo "".$row['name'].",";
        }

我想把它打印出来:

Adam,Sophia,Tom,Brian

而不是:

Adam、Sophia、Tom、Brian、

如何以最佳方式排除最后一个逗号?

$rowdata = mysql_query("SELECT name FROM table_names");
$names = array();
while($row = mysql_fetch_array($rowdata)) {
    $names[] = $row['name'];
}
echo implode(', ', $names);

与其直接回显它,不如将它放入一个变量(可能名为$values(中,然后执行:

$values = rtrim($values,",");

在每个条目前打印逗号并省略第一个:

$first = TRUE;
while(($row = mysql_fetch_array($rowdata)) !== FALSE) {
  if(!$first) echo ',';
  echo htmlspecialchars($row['name']);
  $first = FALSE;
}

另一种方法是使用提取回显循环中的第一行,这样就不必在每次迭代中评估if语句(过早优化ftw!(:

if(($row = mysql_fetch_array($rowdata)) !== FALSE)
  echo htmlspecialchars($row['name']);
while(($row = mysql_fetch_array($rowdata)) !== FALSE) {
  echo ',', htmlspecialchars($row['name']);
}

最后你可以在mysql:中完成

select group_concat(name) from table_names

总的来说,这将变成:

$rowdata = mysql_query("SELECT group_concat(name) as names FROM table_names");
while($row = mysql_fetch_array($rowdata)) {
    echo $row['names'];
}
$rowdata = mysql_query("SELECT * FROM table_names");
$names = array();
while($row = mysql_fetch_array($rowdata)) {
    $names[] = $row['name'];
}
echo implode( $names, ',' );

顺便说一句,如果您只使用"name"列,那么最好执行SELECT name FROM ..

让它。。

$names = array();
while ( $row = mysql_fetch_array( $rowdata ) ) {
    $names[] = $row['name'];
}
$names = implode(', ', $names);
echo $names;