Tom: ARRAY in TXT schreiben?! Hilfe :-(

Beitrag lesen

Hello,

ich habe einVerständnis Problem mit einem ARRAY in PHP.

Das sehe ich ;-)

Ich lese eine TXT in ein ARRAY und addiere zu jedem Wert(praktisch in jeder Zeile der TXT steht eine Zahl) etwas dazu.

Genau! Du liest eine Textdatei ein.
Wodurch ist eine normale Textdatei gekennzeichet?
1. Dass sie sequentiell gelesen werden muss
2. Dass die einzelnen "Zeilen" durch einen Zeilentrenner vonneinander getrennt sind
3. Dass sie i.d.R. "Texte" enthält
4. aber auch Dass die Zeilen unterschiedliche Inhalte unterschiedlicher Länge haben können.

Am besten stellt man sich eine textdatei nicht als ein Blatt papier vor, sondern als einen Bindfaden mit Knoten in verschiedenen Abständen. Die Knoten sind die Zeilenendezeichen...

Nun möchte ich nach der Addition das ARRAY $lines wieder in die TXT schreiben. Leider funktioniert das bei mir nicht. Ich hatte es mit fwrite versucht. Im Netz habe ich nichts hilfreiches gefunden.

Die Funktion file() hat die unangenehme Eigenschaft, dass sie die Zeilenendezeichen nicht entfernt, sondern in jedem Element eins stehenlässt. Das letzte bedarf der besonderen Untersuchung!

<?php
$lines = file ('Messdaten.txt');
$lines[0]=$lines[0]+1;
$lines[1]=$lines[1]+2;
$lines[2]=$lines[2]+3;
$lines[3]=$lines[3]+4;
$lines[4]=$lines[4]+5;
$lines[5]=$lines[5]+6;
$lines[6]=$lines[6]+7;
$lines[7]=$lines[7]+8;
?>

Wenn Du also zu einem Text etwas numerisches hinzuaddieren willst, dann musst Du diesen erstmal in einen Numerus umwandeln. Das geht entweder durch die automatische Typumwandlung von PHP; dazu müsste aber das Zeilenendezeichen hinter dem Wert erst vernichtet werden, oder aber durch eine Umwandlungsfunktion. IntVal() ist eine solche.

http://www.php.net/manual/en/function.intval.php

<?php

define('CRLF', chr(10));

$_lines = file ('Messdaten.txt');
  $_lines[0]=intval($_lines[0])+1;
  $_lines[1]=intval($_lines[1])+2;
  $_lines[2]=intval($_lines[2])+3;
  $_lines[3]=intval($_lines[3])+4;
  $_lines[4]=intval($_lines[4])+5;
  $_lines[5]=intval($_lines[5])+6;
  $_lines[6]=intval($_lines[6])+7;
  $_lines[7]=intval($_lines[7])+8;

$file_contents = implode(CRLF, $_lines);

file_put_contents('Messdaten.txt',$file_contents);
?>

Ich stelle mir vor, dass es so funktionieren könnte.
Schau Dir die Funktionen im Handbuch an.

Das mit dem Unterstrich bei $_lines ist nur eine Macke von mir. Ich kennzeichne so die Variablen, die ein Array vermuten lassen, ähnlich $_POST & Co.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau