我创建了一个数组,它从数据库获取一些数据并将其输入数组。
使用array_count_values,我还可以找出每个值在数组中出现的次数,结果数组如下所示:
原始代码:
$winnersarray = array();
$winnersresults=mysql_query("SELECT r.driverId FROM results r JOIN calendar c ON r.eventID=c.id WHERE c.event='$eventName' AND c.competition='$competition_id' AND r.position='1' AND r.eventSession NOT IN ('T','P','Q','Q1','Q2','QA')");
while($row = mysql_fetch_assoc($winnersresults)) {
$winnersarray[]=$row['driverId'];
}
print_r(array_count_values($winnersarray));
阵列打印:
Array ( [887] => 1 [191] => 1 [94] => 2 [253] => 1 [578] => 1 [50] => 2 [4] => 1 [179] => 1 [59] => 1 [95] => 1 [333] => 2 [936] => 1 )
此时,我卡住了。我想要实现的是一个表,其中包含值出现的实例数(即用户94,用户50和用户333为2),以及使用这些ID的其他数据(即与其关联的用户名和ID该ID位于1)的事件。
欢迎任何指向正确方向的指针!
编辑:来自维基百科的类似表格,展示了我希望最终表格数据的外观:http://i.imgur.com/o5ZFH7r.png 该表按获胜次数排序,这也是我需要对上述数据进行的操作。
PS - 我知道mysql已被折旧 - 我正在浏览遗留代码并在我去的时候更新到mysqli。该网站是一个很好的4-5岁,所以有相当多的修补!
答案 0 :(得分:1)
这可以使用SQL完成,不需要PHP数组函数。使用SQL的group by
,count
和order by
。以下是它的工作原理:
SELECT count(r.driverId) as count, r.driverId
FROM results r
JOIN calendar c
ON r.eventID=c.id
WHERE c.event='$eventName' AND
c.competition='$competition_id' AND
r.position='1' AND
r.eventSession NOT IN ('T','P','Q','Q1','Q2','QA')
group by r.driverId
order by count desc