occurrence of A----5 times
occurrence of B----7 times
occurrence of C----6 times
($total['A']=5;
$total['B']=7;
$total['C']=6;)
我需要每一個根據其發生如下評價,率陣列基於陣列值
$rating['A']=3;
$rating['B']=1;//most occurrence will get rate 1.
$rating['C']=2;
occurrence of A----5 times
occurrence of B----7 times
occurrence of C----6 times
($total['A']=5;
$total['B']=7;
$total['C']=6;)
我需要每一個根據其發生如下評價,率陣列基於陣列值
$rating['A']=3;
$rating['B']=1;//most occurrence will get rate 1.
$rating['C']=2;
asort(&$total);
$rating = 1;
foreach (array_reverse($total) as $key => $val)
$total[$key] = $rating++;
乾淨,漂亮! – perrohunter
謝謝@Cobra_Fast –
你也可以嘗試使用像第一個排序值的陣列功能,並獲得鑰匙然後使用提取的鍵作爲值創建另一個數組。現在你可以得到與他們的排名相同的數組,除了當排列以索引0開始時,'0'排名第一。
可能你可以用'0'填充一個附加值然後最後刪除它。
這樣的事情,
$total['A']=5;
$total['B']=7;
$total['C']=6;
$total[0]=0;
asort($total);
$total = array_slice(array_flip(array_keys($total)),1);
或者,如果你不喜歡墊一個額外的價值,你可以嘗試這種方式。用鍵和有序數組的數量創建一個數組。
asort($total);
$total = array_combine(array_keys($total),range(1, count($total)));
這可能是一種快速簡便的方法。希望這可以幫助。
當兩個總數相等時會發生什麼? – cdhowie
@OneTrickPony代碼現在是正確的形式。:-) –