好的,所以这是交易:我正在尝试根据以下标准(按顺序)对团队进行排序:
对于第1,2和4项,我只需从SQL数据库中提取数据即可。因此,当我遍历SQL结果时,我可以创建以下数组:
arr[$row['team_id']] => array('overall_wins' => $row['wins'],
'division_wins' => $row['div_wins'],
'points' => $row['pts']);
到目前为止一切顺利。 问题是两个或更多团队拥有相同的总胜场和分区胜利的时候。在这种情况下,我需要能够使用他们的 head-to-head 记录打破平局。
所以我的想法是遍历上面的数组并使用临时变量检查当前overall_wins
和division_wins
是否等于前一个团队的值,然后“做某事”...使用head - 打破领带的记录。
现在,我可以再次使用SQL获得两个团队之间的正面记录,所以这不是问题,但我的问题是:
我如何使用使用显示来展示两个团队之间的关系?
让我们使用以下示例:
team_id overall_wins division_wins
------------------------------------------
B 6 6
A 7 7
E 6 5
C 6 6
G 10 9
D 4 3
F 2 0
这首先要通过:
team_id overall_wins division_wins
------------------------------------------
G 10 9
A 7 7
B 6 6
C 6 6
E 6 5
D 4 3
F 2 0
...但是让我们说 C队正面击败B队。在这种情况下,B队和C队需要按照上述顺序进行交换。
我不确定如何在PHP数组的范围内单独执行此操作,而不会对整个临时数组和诸如此类的内容完全疯狂。
思考?感谢。
答案 0 :(得分:1)
您可以使用usort
function compareTeams ($a, $b){
if ($a["overall_wins"] == $b["overall_wins"]){
if ($a["division_wins"] == $b["division_wins"]){
if ($a["head_to_head"] == $b["head_to_head"]){
return 0;
} else {
return $a["head_to_head"] == $b["head_to_head"];
}
} else {
return $a["division_wins"] - $b["division_wins"];
}
} else {
return $a["overall_wins"] - $b["overall_wins"];
}
}
usort($arr, "compareTeams");
$ arr现在将根据您的需要进行排序