PHP - 从多维数组开始的不同日期的排名

时间:2014-11-27 17:11:59

标签: php mysql arrays multidimensional-array

我在多维数组中存储不同日期的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函数进行排名(我的第一个问题)。有什么想法吗?

0 个答案:

没有答案