PHP Durchsuchen und Auswerten eines Strings

cpujunkie

Cadet 3rd Year
Registriert
Dez. 2011
Beiträge
53
Hallo Leute,

ich habe einen Zeichenstring, der kontinurlich in einem Txt File weiter (je nach Ereignis) aufgebaut wird. Hier mal ein Beispiel um eine bessere Übersicht zu bekommen:

Code:
User 10,5,734
User 02,4,1284
User 17,5,249
User 09,3,864
User 17,5,249
User 12,1,518
User 10,5,739
User 07,4,565
User 14,4,540
User 08,5,575

Ich möchte nun jeweils den LETZTEN dritten Wert auslesen. Zum Beispiel wenn wir mal User 10 nehmen, dieser hat in der ersten Zeile den Wert 734 und später noch einmal 739. Genau diesen 739 Wert würde ich gerne per Befehl auslesen.

Ich kenne mich etwas mit preg in PHP aus und wahrscheinlich macht es Sinn nach dem Muster "User 10,,," zu suchen und sich dann den Wert des letzten Arrays anzeigen zu lassen, aber ich komme leider nicht drauf. Natürlich werden auch einige sage, dass man das doch am besten in einer Datenbank machen kann, aber es ist wirklich nur das eine was ich brauche, somit ist Datenbank überdimensioniert

Bin für einen kurzen Denkanstoß sehr dankbar. :p
 
fgetcsv kenne ich, aber damit habe ich doch nur String aufgeteilt und die Info, welcher Wert welchem User zugeteilt ist geht doch auf verloren, oder?
 
kannst ja trotzdem auf sqlite oder so setzen ;)
ähm wieso speicherst du die daten nicht einfach als serialisiertes array? kanns dann ein unserialize auf den datei conten ausführen und hast wieder ein array mit dem du arbeiten kannst
 
Was hast du denn vor?
Normalerweise würdest du in dieser Form (=ungeordnet) alle Zeilen per fgetcsv durchgehen und entweder direkt den Wert, den du brauchst zurückgeben oder (vielleicht besser?) die Daten einmalig einlesen und in einer Map/assoziativem Array halten.

Also in der Art:
Code:
$user = fgetcsv($handle);
$users[$user[0]] = $user;

Wie kling1 schon schrieb, könntest du dir den Schritt sparen, wenn du das ganze mit serialize/unserialize bearbeitest.
 
Zuletzt bearbeitet: (Hinweis zu serialize ergänzt)
Es geht sicherlich auch 100 Mal besser, aber so funktioniert es jedenfalls auch ;)

PHP:
$array = file("testdatei.txt");
$i = 1;
foreach($array as $key => $value){
	$zeile[$i] = explode(",", $value);
	$user[$zeile[$i][0]] = $zeile[$i][2];
	$i++;
}
print_r ($user);


Die erste Zeile liest die Textdatei zeilenweise in ein Array ein. Dann wird jede Zeile selbst in ein Array aufgespalten, so dass du pro Zeile ein Array mit allen Werten hast. Aus diesen Arrays wird dann ein letztes User-Array erstellt. Dazu wird einfach der Username als Key verwendet und jeweils der letzte Wert zugeordnet. Dabei wird $value jedes Mal einfach überschrieben, so dass du am Ende den letzten User -> Wert hast.
 
Zuletzt bearbeitet:
Zurück
Oben