ich habe ein multidemensionales Array in dem User mit ihren Punkten und ihrer Anzahl an Perfekt getippten Spielen (Fussball), Differenz richtig getippten Spielen, Tendenz richtig getippten Spielen und ihren Falsch getippten Spielen gespeichert sind:
Code:
Array ( [0] => Array ( [u_name] => Bob [score] => 9 [perfect] => 1 [diff] => 1 [trend] => 1 [fails] => 0 ) [1] => Array ( [u_name] => Markus [score] => 0 [perfect] => 0 [diff] => 0 [trend] => 0 [fails] => 3 ) [2] => Array ( [u_name] => Laura [score] => 5 [perfect] => 0 [diff] => 1 [trend] => 2 [fails] => 0 ) )
Skript:
PHP-Code:
// Array nach Punkten sortieren
function cmp_desc($a, $b)
{
// Wenn die Score unterschiedlich ist
if($b["score"] > $a["score"])
{
return 1;
}
elseif($b["score"] < $a["score"])
{
return -1;
}
else
{
// Wenn Score gleich -> Anz. Pefekte Tipps vergleichen
if ($b["perfect"] > $a["perfect"])
{
return 1;
}
elseif($b["perfect"] < $a["perfect"])
{
return -1;
}
else
{
// Wenn Score, Pefekte Tipps gleich -> Anz. Differenz Tipps vergleichen
if ($b["diff"] > $a["diff"])
{
return 1;
}
elseif ($b["diff"] < $a["diff"])
{
return -1;
}
else
{
// Wenn Score, Pefekte Tipps, Differenz Tipps gleich -> Anz. Tendenz Tipps vergleichen
if ($b["trend"] > $a["trend"])
{
return 1;
}
else
{
return -1;
}
}
}
}
}
usort($all_user, "cmp_desc");
Ich bräuchte jetzt mal Hilfe bei der Ausgabe der Rangliste. Ich will das der Rang wenn wirklich alles gleich ist (gleicher score, gleich viele perfects, diffs, trends) gleich bleibt und nicht weiter zählt. Danach aber weiter zählt mit der "richtigen" Position
Also so:
1. UserA
2. UserB
3. UserC
4. UserD
5. UserE (alles gleich)
5. UserF (alles gleich)
7. UserG
8. UserH (alles gleich)
8. UserI (alles gleich)
8. UserJ (alles gleich)
Und nicht so:
1. UserA
2. UserB
3. UserC
4. UserD
5. UserE (alles gleich)
5. UserF (alles gleich)
6. UserG hier müsste eigentlich schon die 7. stehen!!!
7. UserH (alles gleich)
7. UserI (alles gleich)
7. UserJ (alles gleich)
Am besten wäre es für mich wenn zusätzlich der rang auch noch in dem Array gespeichert wird.
Wenn ich also auf array[UserF][rank] zugreife ich die 5 erhalte.
Wie gehe ich das am besten an?
Einen Kommentar schreiben: