csv-datei sortieren

vomweg

Grünschnabel
Ich hoffe, dass diese Frage hier noch nicht vorkam. Wenn doch, entschuldige ich mich schonmal, aber die Suchfunktion funktioniert nicht. :)

Also, folgendes Problem, an einem Beispiel erklärt:

Habe eine typische Fußballtabelle in Excel erstellt, speicher sie als csv ab und lese sie mit php ein. So weit kein Problem.

Jetzt möchte ich aber, dass mein php-script diese Datei sortiert, nach mehreren Kriterien, also zuerst nach punkten, dann nach der Differenz und letztendlich nach den erzielten Toren.
Wie kann ich das verwirklichen? Bin für jede Hilfe dankbar!
Ich denke mal, dass ich die Daten erst in ein Array einlesen und dort sortieren muss, aber da hapert es schon mit dem php-Wissen bei mir. :)
 
array_multisort ist dein freund...erfordert allerdings das du zu jedem wert ein array anlegst.
bsp.:
tore und punkte eines spieltages einlesen:
PHP:
//Aufbau der Datei:
//Team;Tore;Punkte

//Trennzeichen für die einzelnen Werte
$trenner = ";";

//Datei einlesen
$array = file("lalala.csv");
//in die array steckt nun die mit file eingelese Datei

//für die anzahl der Zeilen mache folgendes
for($x=0;$x<count($array);$x++)
{
	//splitte jede Zeile nach $trenner
	$matches = explode($trenner,$array[$x]);
	$teams[] = $matches[0];
	$tore[] = $matches[1];
	$punkte[] = $matches[2];
}

//nun stecken in den Arrays $teams, $tore und $punkte alle Werte
//und müssen nun noch sortiert werden:
array_multisort (
$punkte, SORT_ASC, SORT_NUMERIC, 
$tore ,SORT_DESC, SORT_NUMERIC, 
$teams, SORT_ASC, SORT_STRING);

//nun ist alles sortiert und muß nur noch ausgegeben werden
for($x=0;$x<count($teams);$x++)
{
	//natürlich kommt das mit nem Template viel besser ^^
	echo "Team: ".$teams[$x]." Punkte: ".$punkte[$x]." Tore: ".$tore[$x];
}

//Have fun :D
 
Jetzt tut sich ein neues Problem auf:
Dezimalzahlen werden nicht korrekt sortiert! Habe ich z.B. eine Zahl 1,5 und 1,6, wird dies nur nach der Stelle vor dem Komma sortiert und danach tritt direkt das nächste Sortierkriterium in Kraft.
 
Du könntest auch alternativ über die lokalen PHP Einstellungen den . zum , machen. Aber empfehlen kann ich das nicht. Es ist in jeder mir bekannten Sprache üblich das , als Punkt zu schreiben. Kommt aus dem Englischen.
 
Zurück