获取数据库结果后从数组中删除最后一个逗号

Remove last comma from array after obtaining database results

我正在尝试从我的数据库中列出数据,我需要在我的数组中使用变量,但是在回显它时我希望它删除最后一个逗号,但它似乎不起作用。

$forum_usersonline = $kunaiDB->query("SELECT * FROM users WHERE user_loggedin = '1'");
                while($forum_usersonline_fetch = $forum_usersonline->fetch_array()) {
                    $usersonlineuname = $forum_usersonline_fetch["user_name"];
                    $onlinelist = array($usersonlineuname, ' ');
                    echo implode($onlinelist, ',');
                }

它总是 returns 和 user1, user2, 那么我应该怎么做呢?

使用rtrim(string,',')

参考转到http://www.w3schools.com/php/func_string_rtrim.asp

您可以使用 chop(); 从字符串的右端删除字符。

一个例子:

<?php
$str = "Random String Ending With,";
echo $str . "<br>";
echo chop($str,",");
?>

或者您可以使用 rtrim();,例如:

<?php
$str = "Random String Ending With,";
echo $str . "<br>";
echo rtrim($str,',');
?>

或者您也可以使用 substr,例如:

<?php
$str = "Random String Ending With,";
echo substr($str,0,-1)."<br>";
?>

您可以在 sql 轻松完成这项工作。如果您的数据库是 mysql 尝试以下

SELECT GROUP_CONCAT(user_name) as user_name FROM users WHERE user_loggedin = '1'

或者如果您的数据库是 postgres,请尝试以下操作

SELECT string_agg(user_name, ',') as user_name FROM users WHERE user_loggedin = '1'

以上查询结果return逗号分隔user_name.

问题是您在 while 循环内执行 implode,应该在构建最终数组后在外部执行。这就是我要做的:

$forum_usersonline = $kunaiDB->query("SELECT * FROM users WHERE user_loggedin = 1");

while ($row = $forum_usersonline->fetch_array()) {
    $onlinelist[] = $row["user_name"];
}

echo implode($onlinelist, ",");

然而,这不应该是这种情况,因为您在进行数据库查询时应该使用 CONCAT