【发布时间】:2014-07-21 01:33:32
【问题描述】:
我有几个包含团队数据的数组...array_multisort() 似乎没有保留团队数据关联。我有这样的事情:
Teams[$z] = various strings
ConfNum[$z] = various strings
$DivNum[$z] = various strings
$DivWinner[$z] = integer of 1 or 0.
$TeamRank[$z] = integer of the team's rank
为了调试,我使用一个 for 循环并打印每个的值...所以$Teams[$z] - $ConfNum[$z] - $DivNum[$z] ...等等。
我运行array_multisort()(我过去曾多次使用过),但突然之间关联不再存在。
这是我的调试。
在 array_multisort 之前:
key - Teams - Conf - Div - Rank - DivWin - Series
z:0 - 3 - 2 - 2 - 0 - 1 - 1
z:1 - 10 - 2 - 7 - 8 - 1 - 2
z:2 - 75 - 2 - 2 - 2 - 0 - 3
z:3 - 11 - 2 - 2 - 5 - 0 - 4
z:4 - 55 - 1 - 1 - 1 - 1 - 5
z:5 - 79 - 1 - 6 - 3 - 1 - 6
z:6 - 67 - 1 - 6 - 4 - 0 - 7
z:7 - 4 - 1 - 1 - 6 - 0 - 8
请注意 z:1... team 10 应该是 Conf 2 Div 2 .. 等等。然后我运行我的 array_multsort:
array_multisort($DivWinner,SORT_DESC,$TeamRank,$Teams,$ConfNum,$DivNum,$SeriesID);
这将我的 DivWinners 放在首位,然后按我的 TeamRank 排序。我包括 Teams、ConfNum、DivNum、SeriesID,因为我想在排序后维护所有这些数组的关联。
排序后我得到这个:
key - Teams - Conf - Div - Rank - DivWin - Series
z:0 - 3 - 2 - 2 - 0 - 1 - 1
z:1 - 10 - 1 - 1 - 1 - 1 - 2
z:2 - 11 - 1 - 6 - 3 - 1 - 4
z:3 - 4 - 2 - 7 - 8 - 1 - 8
z:4 - 75 - 2 - 2 - 2 - 0 - 3
z:5 - 55 - 1 - 6 - 4 - 0 - 5
z:6 - 79 - 2 - 2 - 5 - 0 - 6
z:7 - 67 - 1 - 1 - 6 - 0 - 7
所以现在我们再去看看第 10 队。
现在设置为 Conf 1 Div 1... 完全不正确。
这是一个 DivWinner(设置为 1),所以它应该排名“更高”,但是,TeamRank 是 8...所以在四个 DivWinners 中,它应该是最低的...而不是排名第二。
【问题讨论】:
-
$Teams已排序,但$Team已打印。错别字? -
@Fabricator 如果您指的是这部分:“请注意 z:1... team 10 应该是 Conf 2 Div 2”,我说的是“team”,这并不是一个错字。 .. 只是我在谈论 Teams 即兴变量。我仔细检查了代码,它确实是所有示例中使用的 $Teams。
-
我指的是
for debugging, I use a for loop and print the value of each... so $Team[$z] - $ConfNum[$z] - $DivNum[$z] ... etc. -
@Fabricator 啊,我明白了。我仔细检查了代码,发现我实际上在使用 Teams...所以我的消息有误(错字)。
标签: php array-multisort