Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Sortieren mehrdimensionaler Arrays [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Sortieren mehrdimensionaler Arrays


 
DasUNBEKANNTe
14-10-2005, 22:39 
 
Hallo ihr lieben Helferlein :)

ich weiß, dass es das Thema schon einige Male gibt. Ich hab soweit alle gelesen und auch die entsprechenden Funktionen probiert. Irgendwie funktioniert es nicht und so allmählich bin ich an nem Punkt angelangt wo ich nur noch verzweifel ;)

Kurz zum Hintergrund meines Anliegens.
Ich möchte eine Liga-Tabelle anhand von vielen Spielergebnissen erstellen. Das Zusammenzählen der Ergebnisse funzt soweit einwandfrei. Auch das Ausgeben der ganzen Daten entsprechend zugeordnet zum Team funktioniert. Das Problem liegt jetzt nur noch beim ordnen.

Der Code für die unsortierte Ausgabe sieht wie folgt aus:

for($a = 1 ; $a < 15 ; $a++)
{
echo " S: ".$daten[$a][won]." U: ".$daten[$a][draw]." N: ".$daten[$a][loss]." Point: ".$daten[$a][points];
echo "<br>";
}

Die VAR $a entspricht dabei der Zuordnung des jeweiligen Teams.

Das Sortieren sollte nun mit folgendem Code funktionieren

foreach($daten as $res)
{
$sortasc[] = $res[$a]['points'];
$sortasc2[] = $res[$a]['won'];
}
$datenT = array_multisort($sortasc, SORT_DESC,$sortasc2, SORT_DESC, $daten);

Wenn ich die Ausgabe nun innerhalb der for-schleife mache, ist sie weiterhin unsortiert. Eigentlich logisch. Wenn ich es aber außerhalb der for-schleife mache, erhalte ich keine bzw. ne fehlerhafte ausgabe (die da lautet: guck dich die funktion array_multisort an ;) )
hab noch einiges probiert, bin aber zu keinem ergebnis gekommen ... deshalb mal an alle ... HILFE :)

wo muss der 2.code (foreach) ausgeführt werden ... in meiner for-schleife oder außerhalb ?

 
onemorenerd
15-10-2005, 00:28 
 
Die Informationen sind ein wenig dürftig. Gib mal beispielhaft den Inhalt von $sortasc und $sortasc2 an, sowie das gewünschte Ergebins ($datenT).
Ansonsten kann ich nur auf http://php.net/array_multisort verweisen.

 
DasUNBEKANNTe
16-10-2005, 12:31 
 
ich konnte irgendwie nich antworten, deshalb erst jetzt die antwort
btw: das problem hat sich inzwischen gelöst. habs selbst heraus bekommen.

richtig heißen muss das ganze:

zum sortieren:
foreach($daten as $res)
{
$sortasc[] = $res['points'];
$sortasc2[] = $res['won'];
}
array_multisort($sortasc, SORT_DESC,$sortasc2, SORT_DESC, $daten);


und dann anschließend zum auslesen
for($a = 0 ; $a < 14 ; $a++)
{
echo " S: ".$daten[$a][won]." U: ".$daten[$a][draw]." N: ".$daten[$a][loss]." Point: ".$daten[$a][points];
echo "<br>";
}

jetzt werden die neu sortieren daten so ausgegeben wie ich sie haben will ... toll ne :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:08 Uhr.