您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么中php項目中實現一個rank函數功能,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
具體分析如下:
sql語句實現排名是像這樣的如:
總分成績為 195,180,180,161,名次分別為1,2,3,4,遇到并列的情況也是按照順序的,
而Excel函數rank排名得到的結果是1,2,2,4,遇到并列跳過中間的3
下面的函數模擬的就是這種情況
函數如下(不知道有沒有更好的實現方法):
公式為: 名次=總人數--比自己小的數的個數-這個分數重復次數+1(加上自己)
得到名次的數組再根據對應的id寫入到數據庫,就實現rank的計算功能
(當然這個也可以改成這樣195,180,180,165,名次是這樣的1,2,2,3)
//獲得一組數的名次的數組function rank(array $array) foreach($array as $val){ $repeat=get_array_repeats($val,$array); $num=gt_array_values($val,$array); $rank[]=count($array)-$num-$repeat+1; } return $rank; } //獲得比自己數小的個數 function gt_array_values($val,array $array){ $num=0; for($i=0;$i<count($array);$i++){ if($val>$array[$i]){ $num++; } } return $num; } //獲得這個數的重復次數 function get_array_repeats($string,array $array) { $count = array_count_values($array); foreach ($count as $key => $value) { if ($key == $string) { return $value; } } }
關于怎么中php項目中實現一個rank函數功能就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。