zeile in array ändern

  • Themenstarter Themenstarter erazer04
  • Beginndatum Beginndatum
E

erazer04

hey leute hab ma grad irgendwie n hänger. ich denke das das für euch kein problem ist.
also ich hab folgendes script:

<?php
//anfang: note eintragen
$post = $_POST["bewertung"];
$datei = "bewertung.txt";
$array = file($datei);
$na = explode ("|",$array[$id]); // Note | Anzahl
$note = $na[0] + $post;
$anzahl = $na[1] + 1;
$narray = $note."|".$anzahl;
//ende: note eintragen
?>

was noch fehlt:
ich möchte die zeile $array[$id] mit $narray überschreiben.
bewertungs .txt sieht ungefähr wie folgt aus:

6.65|7
67.12|56
86.34|345 <--diese zeile soll mit dem neuen wert überschrieben werden
2.2|5

hab schon gegooglet und gefunden man soll datei öffnen manipulieren und wieder abspeichern aber wie ich genau an die stelle komme hab ich noch nicht so ganz verstanden.

danke für eure Hilfe
 
Bitte halte dich an Punkt 15 der Netiquette.
PHP:
<?php
//anfang: note eintragen
$post = $_POST["bewertung"];
$datei = "bewertung.txt";
$array = file($datei);
$na = explode ("|",$array[$id]); // Note | Anzahl
$note = $na[0] + $post;
$anzahl = $na[1] + 1;
$narray = $note."|".$anzahl;

//ende: note eintragen
$array[$id] = $narray; // Arrayelement mit neuem Wert überschreiben
$fh = fopen($datei, 'w'); // Datei zum Schreiben öffnen und Inhalt leeren
fputs($fh, implode(chr(13).chr(10), $array)); // Inhalt einfügen
fclose($fh); // Datei schließen
?>
 
Hallo,

[phpf]file[/phpf] löscht die Zeilenumbruchzeichen beim Einlesen nicht. Darum muss man beim Zusammenfügen mit [phpf]implode[/phpf] den leeren String als Trennzeichen verwenden, da sonst zusätzliche Leerzeilen entstehen. Lediglich die veränderte Zeile sollte man mit einem Zeilenumbruch ausstatten.

Ab PHP 5 wäre auch Folgendes möglich:
PHP:
file_put_contents($datei, $array);

Grüße,
Matthias
 
Du hast recht Matthias; Schande über mich...
PHP:
fputs($fh, implode(chr(13).chr(10), $array)); // Inhalt einfügen

// richtig:
fputs($fh, implode('', $array)); // Inhalt einfügen
 
Zurück