• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array sortieren

hallojs

Mitglied
Hallo,

ich würde gerne ein Array anhand eines anderen sortieren. Meine Arrays sind vom Prinzip her wie folgt aufgebaut:

Code:
$benutzerid_punktepokergesamt( [0] => 15 [1] => 20 [2] => 10)

$benutzerid_tag_spiel( [0] => $id_datum_spiel( [0] => $i_datum_spiel( [MauMau] => 10 [Poker] => 15 [Doppelkopf] => 20 ) [2] => $i_datum_spiel( [MauMau] => 5 [Poker] => 10 [Doppelkopf] => 25)) [1] => $id_datum_spiel( [0] => $i_datum_spiel( [MauMau] => 5 [Poker] => 20 [Doppelkopf] => 5 )) [2] => $id_datum_spiel( [0] => $i_datum_spiel( [MauMau] => 20 [Poker] => 10 [Doppelkopf] => 15 )))

Nun würde ich gerne $id_tag_spiel so sortieren, dass die benutzer mit den meisten punkten in den Pokerspielen (siehe $benutzerid_punktepokergesamt) weiter vorne stehen. Ich habe es schon ein weile probiert das Problem mit den PHP-Funktionen sort und array_multisort zu lösen, jedoch ist mir das leider nicht gelungen und ich bin mir auch nicht ganz sicher wie ich das Problem am besten angehen soll. Könnte mir jemand helfen? Danke!

Grüße
hallojs
 
Am Einfachsten geht das via array_multisort:


PHP:
$ar1 = array( 15,20,10);
$ar2 = array(1, 3, 2);

array_multisort($ar1,SORT_DESC,$ar2);

var_dump($ar1); //20 15 10
var_dump($ar2); //3 1 2
 
Zuletzt bearbeitet:
Hallo Nitamud,

danke für deine schnelle Antwort! Geht das denn auch mit dem Mehrdimensionalen Arrays aus meinem Beispiel? Könnte mir vielleicht Jemand auf die Sprünge helfen, wie dass dann aussehen müsste? Danke!!!

Grüße hallojs
 
Im Grunde genau gleich:

PHP:
    $ar1 = array( 15,10,20);
                $ar2 = array([["MauMau" => 10, "Poker" => 15, "Doppelkopf" => 20],["MauMau" => 5, "Poker" => 10, "Doppelkopf" => 25],["MauMau" => 5, "Poker" => 20, "Doppelkopf" => 5]]);
                array_multisort($ar1,SORT_DESC,$ar2[0]);
               
                echo "<pre>";
                print_r($ar1); //20 15 10
                print_r($ar2);
                
                echo"</pre>";
 
Zurück
Oben