我有一个旨在创建评分方法的公式。用户输入“金”、“银”和“铜”各自应值的值。然后在数据库中找到这些奖牌,并将每个奖牌的总数乘以用户指定的数量。用户还可以选择“优先级值”,这与表中的单独字段有关。
奖牌的总值(value)存储在 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,但不确定这里最好使用哪种方法。有什么建议吗?
最佳答案
具体方法如下。
- 将每一行和分配的分数读取到数组或对象中。
- 将其中每一个添加到“结果列表”或数组中。
- 根据分数对结果列表进行排序。
- 打印前 10 个。
由于您从数据库读取的顺序不是您希望打印的顺序,因此有必要将数据存储在临时数据结构中并对其进行排序。
如上所述。
关于PHP - 想要选择特定数量的行并从 SQL 中对它们进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577851/