Textdatei nach Timestamp sortieren und mit Date ausgeben
Opferanode
- php
0 wahsaga0 Opferanode0 wahsaga
0 suit
Hallo,
ich habe eine Textdatei mit folgendem Inhalt:
Timestamp ; text ; url ; text ;
Nun sind die Timestamps (verständlich) alle durcheinander, und bei der Ausgabe über:
<?
$datei = fopen("test.txt","r"); //öffnet deine txt datei
while($read = fgets($datei,4096)){ //liest die datei aus bis zum schluss
$raw = split(";",$read); //Schneidet die Zeile bei ; in mehre Arrays
$time = date("d.m.Y H:i",$raw[0]);
echo "$time $raw[1] <a href="$raw[2]"> $raw[3] </a><br />"; //Ausgeben der Arrays
}
?>
kommt ein zeitliches Durcheinander zustande. Die Überlegung ist nun das ganze mit Funktion sorter zu Sortieren. Nur wie? ohne die Sortierung bei der Ausgabe mit Time wieder zu verlieren?
hi,
$raw = split(";",$read); //Schneidet die Zeile bei ; in mehre Arrays
Wozu split? split ist für reguläre Ausdrücke als Suchmuster gedacht - einen solchen brauchst du hier aber nicht. explode reicht vollkommen aus.
Und wenn wirklich die "Spalten" mittels Leerzeichen-Semikolon-Leerzeichen getrennt sind, dann solltest du auch danach auftrennen - sonst hast du nachher noch unnötige, ggf. störende Leerzeichen in den Werten.
Die Überlegung ist nun das ganze mit Funktion sorter zu Sortieren. Nur wie?
Beim Einlesen nicht direkt ausgeben, sondern Werte erst mal in einem Array ablegen.
Dieses dann mittels usort() sortieren, und in einer weiteren Schleife über das Array (foreach) ausgeben.
ohne die Sortierung bei der Ausgabe mit Time wieder zu verlieren?
Da geht nichts verloren.
gruß,
wahsaga
Beim Einlesen nicht direkt ausgeben, sondern Werte erst mal in einem Array ablegen.
Dieses dann mittels usort() sortieren, und in einer weiteren Schleife über das Array (foreach) ausgeben.
Ich muss gestehen das ich keine Ahnung habe wie! Wäre das richtig:
$sortieren = array("$raw[0] , $raw[1] , $raw[2] , $raw[3] ");
usort ($sortieren);
Und wie weiter?
hi,
Ich muss gestehen das ich keine Ahnung habe wie!
Das Manual hat Beispiele.
Wäre das richtig:
Nein.
$sortieren = array("$raw[0] , $raw[1] , $raw[2] , $raw[3] ");
Und auch zum generellen Umgang mit Arrays kannst du dich im Manual informieren.
Dieses gezeigte Array enthält nur einen einzelen Textstring als Element. Diesen "sortieren" zu wollen, ist so sinnreich wie die Frage "Was ist der Unterschied zwischen einem Pinguin?"
usort ($sortieren);
Und wie weiter?
Array vernünftig aufbauen,
simple Vergleichsfunktion erstellen,
usort diese Funktion (Funktionsname) als zweiten Parameter übergeben.
gruß,
wahsaga
kommt ein zeitliches Durcheinander zustande. Die Überlegung ist nun das ganze mit Funktion sorter zu Sortieren. Nur wie? ohne die Sortierung bei der Ausgabe mit Time wieder zu verlieren?
die verschiedenen spalten deiner csv-datei (strichpunkt getrennt ?!) in verschiedene arrays lesen und mit array_multisort() sortieren
http://at2.php.net/manual/de/function.array-multisort.php
oder hab ich jetzt was falsch verstanden?