【发布时间】:2012-02-29 13:03:36
【问题描述】:
我有一个包含相应分数的团队列表。
$name[$i] 包含名称,scores[$i] 包含相应的分数
我需要按分数对团队进行排序,同时保持与相应团队名称的分数关联。
我想知道最好创建一个多维数组,例如
$teaminfo[$name][$score] 并使用排序功能还是我更好
使用 sql 对从数据库中抓取的数据进行排序?
无论哪种方式都重要吗?我正在寻找最简单的方法。
【问题讨论】:
我有一个包含相应分数的团队列表。
$name[$i] 包含名称,scores[$i] 包含相应的分数
我需要按分数对团队进行排序,同时保持与相应团队名称的分数关联。
我想知道最好创建一个多维数组,例如
$teaminfo[$name][$score] 并使用排序功能还是我更好
使用 sql 对从数据库中抓取的数据进行排序?
无论哪种方式都重要吗?我正在寻找最简单的方法。
【问题讨论】:
直接从数据库中对它进行排序,您可以省去一大堆的麻烦。只需在 SQL 中包含 ORDER BY 子句即可。
编辑:
如果当前运行 2 个查询,则
SELECT first_table.*, second_table.* WHERE first_table.id = second_table.id
ORDER BY second_table.score DESC
(或其他!)
【讨论】:
score,我是否不必通过运行另一个数据库检查将有序值重新分配给它们对应的name?还是可以一次性完成所有工作?
只是为了扩展 Josh 的答案....
我需要按分数对团队进行排序...一个多维数组,例如 $teaminfo[$name][$score]
WTF?如果一个团队只能有一个分数,为什么要尝试在数组中保留一个值?您只需要一个简单的数组(顺便说一句:PHP 数组不是多维的 - 它们是嵌套的):
$s=mysql_query("SELECT team, score FROM yourtable");
while($r=mysql_fetch_assoc($s)) {
$data[$r['team']]=$r['score'];
}
arsort($data);
但是,在将数据库中的数据返回给 PHP 之前对其进行排序会快得多。 OTOH,您可能对每个 $team 的 $score 有多个值 - 我们不知道这些值如何组合以确定顺序 - 按最大值计算?平均?全部的?别的东西?在这种情况下,您可能需要一个子查询。
【讨论】: