Hello,
Wie kann ich mit PHP einzelne Variablen ändern?
Beispiel: Ich habe eine Textdatei mit folgendem Inhalt:
<?php
$1 = "runder";
$banane = "katze";
$hund= "maus";?>
Mit welchem Befehl kann ich nun z.B. die Variable $banane ändern?
Ich weiss aber nicht, dass im Moment der Wert "katze" ist.Wenn ich fwrite() verwende, kann ich nur entweder alles überschreiben oder was hinzufügen.
Es sind auch unregelmäßige Variablen, es kommen also auch manchmal welche dazu (manuell eingetippt)
Wie geht das?
Weiss das jemand???
Das weiß jemand... ;-)
Ich fasse mal zusammen:
Du möchtest in einer Textdatei Variablen speichern.
Der Namen der Variablen, der Typ und die Anzahl wechselt manchmal.
Dateien sind Stream-Variablen. Das bedeutet, dass dort alles in einem String (Stream) hintereinander steht. Es gibt in wirklichkeit keine Zeilen und erst Recht keine Variablen. Man muss also wissen, welches Byte zu welchem Wert gehört und in welcher Reihenfolge.
PHP bietet hierfür zwei Möglichketien an:
pack()
http://de2.php.net/manual/de/function.pack.php
serialize()
http://de2.php.net/manual/de/function.serialize.php
Da Datenmengen und ein bisschen Overhead in der Rechenzeit heute nicht mehr soviel ausmachen, wie noch vor 20 Jahren, würde ich die zweite Variante bevorzugen.
Man baut sich im Script also einfach ein Array, nennen wir es $_sitzung, und speichert in diesem Array seine Daten.
$_sitzung['wert1'] = "mein Vorname";
$_sitzung['wert2'] = "unbekannt";
$_sitzung['wert3'] = "Hans-Walter";
Und wenn man die diese Daten in einer datei speichern will, lässt man das Array vorher in einen Stream umwandeln:
$stream = serialize($_sitzung);
Diesen String kann man dann mit
$fh = fopen("dateiname","w");
fwrite($fh, $stream);
fclose();
in eine Datei schreiben.
Mit
$fh = fopen("dateiname","r");
$stream = fread($fh, filesize("dateiname"));
flose(&fh);
$_situng = unserialize($stream);
kann man sich diese Datgen wiederbeschaffen.
Wenn man nun mehrere Datenssätze auf Diese Weise abscpeichern will, muss man sich Gedanken über ein geeignetes Trennzeichen zwischen den Datensätzen machen. Das Zeichen darf im serialisierten Datenstrom selber nicht mehr vorkommen. Die Datensätze sind schließlich alle verschieden lang. Oder man sorgt durch Auffüllen mit neutralen Zeichen dafür, dass alle Datensätze die gleiche Länge haben.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen