我试图不仅根据分数,还根据每周获胜情况对积分榜进行排序。在我的联盟中,总得分(选择率)是最高的,但胜利是决胜局。我有三个人排在第二位,其中两人各赢一场,另一人0胜。积分榜页面显示它们出现故障。第三名的每个人都是一样的,赢得2场胜利的人应该是第一名。(见链接)
https://i.stack.imgur.com/taOkK.jpg
我看到它在我的支架上的排序位置。php页面:
$playerTotals = sort2d($playerTotals, 'score', 'desc');
它从我的functions.php页面调用一个排序函数:
//the following function was found at http://www.codingforums.com/showthread.php?t=71904
function sort2d ($array, $index, $order='asc', $natsort=FALSE, $case_sensitive=FALSE) {
if (is_array($array) && count($array) > 0) {
foreach(array_keys($array) as $key) {
$temp[$key]=$array[$key][$index];
}
if(!$natsort) {
($order=='asc')? asort($temp) : arsort($temp);
} else {
($case_sensitive)? natsort($temp) : natcasesort($temp);
if($order!='asc') {
$temp=array_reverse($temp,TRUE);
}
}
foreach(array_keys($temp) as $key) {
(is_numeric($key))? $sorted[]=$array[$key] : $sorted[$key]=$array[$key];
}
return $sorted;
}
return $array;
}
所以,我需要先按得分排序,然后再赢。我试过:
$playerTotals = sort2d($playerTotals, 'score', 'desc', 'wins', 'desc');
但这不起作用,我知道这个功能并不是为了这个。
这就是我得到想要的结果所需要的:
array_multisort($score, SORT_DESC, $wins, SORT_DESC, $playerTotals);
如果我误解了你的问题,很抱歉,但我认为你想按分数和胜利排序,而胜利的优先级较低?那么,如果两名球员得分相同,按胜场排序?如果是这样的话,你可以这样做,它可以是任何语言中的一个通用概念:
usort($arrayOfPlayers, function($a, $b) {
if ($a->score == $b->score) { //Check if score is equal
if ($a->wins == $b->wins) { //If score is equal, sort by wins
return 0;
}
return ($a->wins > $b->wins) ? 1 : -1;
}
return ($a->score > $b->score) ? 1 : -1; //Sort by score since not equal
}
http://php.net/manual/en/function.usort.php
您并没有真正指定排序的格式,所以我认为它只是以wins
和score
为属性的player
对象的array
。如果我误解了或者事实并非如此,请告诉我。