<?
$punkte[VfB]=10;
$punkte[FCB]=9;
$punkte[S04]=9;
$punkte[HSV]=8;
$tordiff[VfB]=10;
$tordiff[FCB]=2;
$tordiff[S04]=9;
$tordiff[HSV]=-5;
?>
Hallo,
Ich scheitere Gerade an der Sortierung dieser Werte. Damit möchte ich eine Tabelle erstellen, also zuerst nach Punkten sortieren und dann nach Tordifferenz.
Raus soll am Ende dann das kommen:
VfB 10P. +10Tore
S04 9P. +9Tore
FCB 9P. +2Tore
HSV 8P. -5Tore
Hab jetzt mal mit uksort versucht was aufzubauen:
Ein Problem gibts jedoch noch: Um zu Vergleichen brauch ich die Arrays $punkte und $tordiff und $teams in der Funktion sortieren. Allerdings ist es relativ umständlich, alles nochmal in der Funktion zu berechnen. Erweitere ich die Zeile
function sortiere($a, $b) { zu
function sortiere($a, $b,$teams,$punkte,$tordiff) { tritt leider auch ein Fehler auf, da die Funktion nur 2 Parameter erlaubt. Gibt es irgendeine Möglichkeit diese Arrays auch in der Funktion verfügbar zu machen?
<?
$teams[]='VfB';$teams[]='FCB';$teams[]='S04';$teams[]='HSV';
$punkte[VfB]=10;
$punkte[FCB]=9;
$punkte[S04]=9;
$punkte[HSV]=8;
$tordiff[VfB]=10;
$tordiff[FCB]=9;
$tordiff[S04]=11;
$tordiff[HSV]=-5;
function sortiere($a, $b) {
//Das will ich eigentlich vermeiden
$teams[]='VfB';$teams[]='FCB';$teams[]='S04';$teams[]='HSV';
$punkte[VfB]=10;
$punkte[FCB]=9;
$punkte[S04]=9;
$punkte[HSV]=8;
$tordiff[VfB]=10;
$tordiff[FCB]=9;
$tordiff[S04]=11;
$tordiff[HSV]=-5;
//Ende Vermeiden
if ($punkte[$teams[$a]]>$punkte[$teams[$b]]) { return 1; }
if ($punkte[$teams[$a]]<$punkte[$teams[$b]]) { return -1;}
if ($punkte[$teams[$a]]==$punkte[$teams[$b]]) {
if ($tordiff[$teams[$a]]>$tordiff[$teams[$b]]) { return 1; }
if ($tordiff[$teams[$a]]<$tordiff[$teams[$b]]) { return -1; }
}
}
uksort ($teams, "sortiere");
print_r($teams);
?>