我在多维数组中存储不同日期的n个玩家的进步得分。 所以我有类似
的东西Array
(
[0] => Array
(
[day] => 2014-10-01
[player] => John
[score] => 1500
)
[1] => Array
(
[day] => 2014-10-02
[player] => John
[score] => 1510
)
[2] => Array
(
[day] => 2014-10-01
[player] => Mary
[score] => 1400
)
[3] => Array
(
[day] => 2014-10-02
[player] => Mary
[score] => 1600
)
)
对于给定的玩家,我需要每天排名,将他的得分与所有其他玩家的得分进行比较。 所以输入将是玩家的id(在这种情况下" John")并且输出应该是JSON对象,如
[{"day"="2014-10-01", "rank": 1}, {"day"="2014-10-02", "rank": 2}]
解决此问题的最佳方法是什么? 为了让您了解我的数据维度,请考虑我在100个不同日期内获得100名玩家的分数(因此,我有一张约10,000条记录的表格)。
编辑(2014年11月27日):多维数组是对存储的数据进行预处理的结果 一个MySQL数据库。 此数据库包含有关以此形式播放的每个游戏的信息:
|Date |WinnerId|LoserId|PtsEarned|PtsLost|
|2014-10-01|John |Mary |10 |-10 |
|2014-10-02|Mary |John |20 |-20 |
所以我不知道如果我可以轻松使用"duplicate" answer中建议的方法。 使用我的第一种方法,输出我需要的结果需要大约7-8秒......所以我认为这不是解决问题的最有效方法......
编辑(2014年11月28日):我尝试直接在MySql中对数据进行排名,并且大约需要2秒才能让我回到某个玩家在特定日期的排名位置;重复相同的查询100次是一个太长的过程... 通过不同的方法,我设法使用"预处理"创建一个php数组。数据在同一时间(2秒),但我错过了最后一步,即如何在多维数组上使用php函数进行排名(我的第一个问题)。有什么想法吗?