sortierfunktion in textfiles
sascha goebel
- php
hallo leute,
ich habe einen textfile, dessen zeileninhalt durch tabulatoren und jede zeile durch einen zeilenumbruch getrennt ist.
nun moechte ich diesen textfile sortieren. d.h.
in der mitte einer jeden zeile steht ein wert nach dem sortiert werden soll. ich dachte mir, ich lese diesen file in ein array und sortiere dann. aber nix, es funktioniert einfach nicht.
kann jemand helfen? waere wirklich super, da ich da schon 3 tage ohne ergebnis damit verbringe.
sascha
Hallo!
ich habe einen textfile, dessen zeileninhalt durch tabulatoren und jede zeile durch einen zeilenumbruch getrennt ist.
nun moechte ich diesen textfile sortieren. d.h.
in der mitte einer jeden zeile steht ein wert nach dem sortiert werden soll. ich dachte mir, ich lese diesen file in ein array und sortiere dann. aber nix, es funktioniert einfach nicht.
kann jemand helfen? waere wirklich super, da ich da schon 3 tage ohne ergebnis damit verbringe.
Zeige mal ein Beispiel, wie die Textdatei aussieht!
mfg, André Laugks
Hallo!
in der mitte einer jeden zeile steht ein wert nach dem sortiert werden soll. ich dachte mir, ich lese diesen file in ein array und sortiere dann. aber nix, es funktioniert einfach nicht.
Das fällt mir spontan ein.
Sortieren nach dem Datum(11082000 und 14082000).
Datei: daten.txt
210110820001554
411140820009985
601110820006547
811110820008899
500110820003325
// Datei wird über file() in ein Array schreiben.
$datei = file("daten.txt");
// Array $datei
// ----------><8--------------
// 210110820001554
// 411140820009985
// 601110820006547
// 811110820008899
// 500110820003325
// ----------><8--------------
/*
Array Elemente spliten und sortieren. Daten, welches beim spliten das Element mit index=3 ist an die erste Stelle. Element-String wird zusammen gesetzt. Es wird eine neue Array($temp) angelegt.
*/
for($i = 0; $i < count($datei); $i++)
{
$werte = split("", $datei[$i]);
$temp[$i] = $werte[3] . "" . $werte[0] . "" . $werte[1] . "" . $werte[2] . "" . $werte[4];
}
// Array $temp
// ----------><8--------------
// 110820002101554
// 140820004119985
// 110820006016547
// 110820008118899
// 110820005003325
// ----------><8--------------
/*
Nun wird die Array $temp durch die Funktion Sort geschickt. sort() fängt von links an zu sortieren.
*/
sort($temp);
// Array $temp sortiert
// ----------><8--------------
// 110820002101554
// 110820005003325
// 110820006016547
// 110820008118899
// 140820004119985
// ----------><8--------------
/*
Array $temp ueberschreibt Array $datei, die Werte werden wieder wie in der Text-Datei zusammen gestellt
*/
for($i = 0; $i < count($temp); $i++)
{
$werte = split("", $temp[$i]);
/*
"" muß maskiert werden, da "" der Oderoperator bei regulären Ausdrücken ist.
*/
$datei[$i] = $werte[1] . "" . $werte[2] . "" . $werte[3] . "" . $werte[0] . "" . $werte[4];
}
// Endergebnis
// Array $datei sortiert
// ----------><8--------------
// 210110820001554
// 500110820003325
// 601110820006547
// 811110820008899
// 411140820009985
// ----------><8--------------
mfg, André Laugks