Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Tippspiel Ranking - Arrays Nach Score sortieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Tippspiel Ranking - Arrays Nach Score sortieren

    Hey ho,

    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
            )
    )
    Dieses lass ich jetzt nach ihrem Score sortieren. Wenn der Score gleich ist wird überprüft wer mehr pefekte Spiele getippt hat. Ist das auch gleich gehts weiter mit der Anzahl der richtigen differenz getippten, dann mit dem trend (richtigen sieger getippt).

    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"); 
    Funktioniert jetzt auch wunderbar bis hier. Allerdings besteht ja immer noch die Möglichkeit das bei Nutzern alles gleich ist. Besonders bei den letzten, die evtl nie was richtig tippen.

    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?


  • #2
    Das sollte eigentlich bei "Anfänger" landen. Sry

    Kommentar


    • #3
      Ich glaube ich habs.

      Kommentar

      Lädt...
      X