我试图不仅通过得分,而且通过每周的胜利来排名积分榜。在我的联赛中,总得分(选秀比率)是顶级赛狗,但胜利是决胜局。我有2个人在2,其中2人每人1胜,另有2人。排名页面显示无序。与第3名的所有人一样,2胜的人应该排在最前面。 (见链接)
我在standings.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');
但这不起作用,我知道这个功能不适用于此。
答案 0 :(得分:2)
这就是获得我想要的结果所需的全部内容:
array_multisort($score, SORT_DESC, $wins, SORT_DESC, $playerTotals);
答案 1 :(得分:1)
很抱歉,如果我误解了你的问题,但我认为你想要按分数和胜利排序,胜利的优先级较低?那么,如果两名球员的得分相同,那么按胜利排序?如果是这样,你可以这样做,它可以是任何语言的一般概念:
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
您没有真正指定排序的格式,因此我认为只有array
个player
个wins
和score
作为属性的对象。如果我误解或者情况不是这样,请告诉我。