【发布时间】:2013-07-15 21:12:42
【问题描述】:
好的,这是交易:我正在尝试根据以下标准(按顺序)对团队进行排序:
- 总体记录
- 分区记录
- 头对头结果
- 点
对于项目 1、2 和 4,我可以简单地从 SQL 数据库中提取数据。因此,当我遍历 SQL 结果时,我可以创建以下数组:
arr[$row['team_id']] => array('overall_wins' => $row['wins'],
'division_wins' => $row['div_wins'],
'points' => $row['pts']);
到目前为止一切顺利。 问题是两支或多支球队的总胜场和分区胜场相同。在这种情况下,我需要能够利用他们的正面交锋记录来打破平局。
所以我的想法是遍历上面的数组并使用临时变量来检查当前的 overall_wins 和 division_wins 是否等于前一个团队的值,然后“做点什么”......使用头对头打破平局。
现在,我可以再次使用 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 数组的范围内执行此操作,而不会完全疯狂地处理整个临时数组之类的东西。
想法?谢谢。
【问题讨论】:
-
那么,让您确定正面交锋结果的架构是什么?
-
@Jon 我直接在 SQL 中比较了两支球队的正面交锋得分,并从比较中获得输赢数字。
-
如果你只是
usort(),你可以调用任何函数/做任何你喜欢的数据库调用,当你意识到整体和分区胜利是一样的...... -
@praguian:这是一个已经修正的错字,意思是
usort():)(是的,你已经看到了;)) -
在
SELECT部分中选择一个头对头获胜字段作为派生/计算字段,然后您可以对其进行排序,例如select team.id, (magic stuff here) AS head_to_head .... ORDER BY overall_wins, division_wins, head_to_head