这是已按点排序的查询:
$data['users'] = $this->db->select( array( 'users_avatar', 'users_teams_id', 'users_id', 'users_name', 'users_win', 'users_lose', 'users_points', 'daily_points' ) )->order_by( 'daily_points', 'desc' )->limit( 26 )->get( 'users' )->result();
因此,它在按点显示顶级用户时正常工作,但是如果顶级用户具有相同的点,则他们看起来非常奇怪。我想确保至少前3位用户,如果相同的点显示它们降序名称,但似乎必须在foreach循环中完成,我不知道如何正确地做到这一点。下面是显示代码:(前3名用户根据第1,第2和第3名出现奖牌,这就是为什么它与div相似)
<div class="dailyleft" id="teams_inner">
<div id="teams_for_scroll">
<?
$i = 1;
sort($i);
foreach($users as $user)
{
echo '
<div class="row">'.(
(($i == '1')?'<div class="num_1"></div>':'').
(($i == '2')?'<div class="num_2"></div>':'').
(($i == '3')?'<div class="num_3"></div>':'').
(($i > '3')?'<div class="num">'.$i.'</div>':'')
).'<img src="'.base_url().'public/uploads/t_'.$user->users_avatar.'" />
<div class="title" style="width:400px;">'.($user->users_teams_id?'<a class="team_link" href="'.site_url('teams/view/'.$user->users_teams_id).'">['.$user_teams[$user->users_teams_id].']</a>':'').' '.htmlspecialchars($user->users_name, ENT_QUOTES).'</div>
<div class="points" style="width:150px;"><span>Daily Points</span><font color="orange">'.number_format($user->daily_points, 0, ' ', ' ').'</font></div>
<div class="points" style="width:230px;"><span>All Time Win/ Lose</span>'.number_format($user->users_win, 0, ' ', ' ').' / '.number_format($user->users_lose, 0, ' ', ' ').'</div>
</div>
';
$i++;
}
?>
</div>
</div>
答案 0 :(得分:0)
您可能希望在初始$data['users']
数组中使用usort。写一个比较器,使用您需要关注的值,然后离开。
答案 1 :(得分:0)
在PHP中,您可以使用usort()
函数声明排序函数。
你可以看到这篇文章:Sort Multi-dimensional Array by Value