如何对mysql_array进行限制?

时间:2010-08-16 10:59:16

标签: php mysql arrays

//check which faction members are online
$sql = mysql_query("SELECT * FROM ".TBL_ACTIVE_USERS." 
WHERE faction=$userfaction_id ORDER BY timestamp DESC,username");
//no '' around var as it is an integer, so php doesn't expeect it to be string
$numrows = mysql_numrows($sql);//gets number of members online
if($numrows == 1){ echo 'You are the only faction member online'; }
else{
while($online = mysql_fetch_array($sql)){
echo '<a href="#" class="light_grey">'.$online['username'].'</a>';
echo ',&nbsp;';
}//loops round all online users
//echoing their usernames
}

如果只有一名成员在线,则上述代码可以正常工作。 问题实际上是美学原因。

如果有多个成员在线,则查询显示:

  

管理员,系统,

我想知道如何在最后的结果(最后一个成员在线的while(){}子句中这样做)我可以删除逗号吗?有没有办法将while语句限制为$ numrows-1或其他类似的东西?然后在名字后面没有逗号和空格的情况下回显最后一个用户?

3 个答案:

答案 0 :(得分:5)

一种优雅的方法是使用数组和implode()

$elements = array();

while($online = mysql_fetch_array($sql)){
  array_push ($elements, '<a href="#" class="light_grey">'.
                         $online['username'].'</a>');
}

echo implode(",&nbsp;", $elements);

答案 1 :(得分:1)

implode是一种方法,正如Pekka所示,另一种方法就是这样做:

$first = true;
while($online = mysql_fetch_array($sql)){
  if (!$first) {
      echo ', ';
      $first = false;
  }
  echo '<a href="#" class="light_grey">',$online['username'],'</a>';
}

如果有很多在线成员,由于不需要构建临时数组,应该比implode方式更有效。

答案 2 :(得分:0)

<?php

$i = 0;
while{

    if($i > $numrows)
    {
        echo ',&nbsp;';
    }

$i++;
}