मुझे लगता है कि ग्रेड पहले से ही डेटाबेस द्वारा क्रमबद्ध हैं, अन्यथा उपयोग करें sort($grades);
।
कोड:
$grades = array(92, 84, 84, 84, 83, 65, 41, 38, 38, 37);
$occurrences = array_count_values($grades);
$grades = array_unique($grades);
foreach($grades as $grade) {
echo str_repeat($grade .' - '.($i+1).'<br>',$occurrences[$grade]);
$i += $occurrences[$grade];
}
परिणाम:
92 - 1
84 - 2
84 - 2
84 - 2
83 - 5
65 - 6
41 - 7
38 - 8
38 - 8
37 - 10
संपादित करें (नीचे चर्चा का जवाब)
जाहिरा तौर पर, यदि टाई सबसे कम स्कोर पर होती है, तो
सभी न्यूनतम स्कोर की रैंक स्कोर की कुल संख्या के बराबर होनी चाहिए।
कोड:
$grades = array(92, 84, 84, 84, 83, 65, 41, 38, 37, 37);
$occurrences = array_count_values($grades);
$grades = array_unique($grades);
foreach($grades as $grade) {
if($grade == end($grades))$i += $occurrences[$grade]-1;
echo str_repeat($grade .' - '.($i+1).'<br>',$occurrences[$grade]);
$i += $occurrences[$grade];
}
परिणाम:
92 - 1
84 - 2
84 - 2
84 - 2
83 - 5
65 - 6
41 - 7
38 - 8
37 - 10
37 - 10