0

我有一个旨在创建评分方法的公式。用户输入“金”、“银”和“铜”各自应该值的值。然后在数据库中找到这些奖牌,每个奖牌的总数乘以用户指定的数量。用户还选择了与表中的单独字段有关的“优先级值”。

奖牌的总值存储在 Medaltotal 变量中。优先级值除以该变量得到总分。

到目前为止,所有这些都按预期工作。

我现在需要按照上述方法定义的从最高“分数”到最低“分数”的顺序对表格进行排序。一旦完成,它应该只回显前 10 个结果,以便根据分数给出“前 10”。

到目前为止我使用的相关代码如下:

while ($row = $res->fetchRow()) {
    $priorityvalue = ($row('gdp') / 100000000);
    $goldvalue = $row[strtolower('gold')] * $gold;
    $silvervalue = $row[strtolower('silver')] * $silver;
    $bronzevalue = $row[strtolower('bronze')] * $bronze;
    $score = ($priorityvalue / $medaltotal);
}

我正在考虑修改 mysql_fetch_array,但不确定从这里开始使用哪种方法最好。有什么建议吗?

4

2 回答 2

0

就是这样。

  1. 将每一行和分配的分数读入一个数组或对象。
  2. 将这些中的每一个添加到“结果列表”或数组中。
  3. 按分数对结果列表进行排序。
  4. 打印前 10 个。

由于您从数据库中读取的顺序不是您希望打印的顺序,因此有必要将数据存储在临时数据结构中并对其进行排序。

如上。

于 2013-05-16T02:12:59.503 回答
0

如果我理解正确,此 SQL 将返回您想要的结果:

select t.*, priority / medaltotal as score
from table t
order by score desc
limit 10
于 2013-05-16T02:15:14.690 回答