sascha goebel: sortierfunktion in textfiles

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

  1. 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

  2. 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