PHP: Array in Datei speichern
-
Hallo miteinander,
ich habe ein kleines PHP-Skript indem ich eine .php datei auslesen und nach Bearbeitung wieder speichern will. Die Datei soll in einem Array gespeichert werden.
if($HTMLFile = fopen($Filename,"r")) { while(!feof($HTMLFile)) { $EditFileLine = fgets($HTMLFile); // Zeile in Variable $aEditFile[] = array($EditFileLine); // Zeile in Array (?) echo ($EditFileLine); // reine Ausgabe der Zeilenvariable } fclose($HTMLFile); }
nach der Bearbeitung soll das ganze wieder an anderer Stelle im Code gespeichert werden (hier vorab in eine Testdatei):
if(isset($_POST['save'])) { // Wenn Button Save gedrückt if($HTMLFileSave = fopen("testfile.txt","w")) { for($n = 0 ; $n < count($aEditFile); $n++) { fputs($HTMLFileSave,$aEditFile[n]); // Füge Array Zeile "n" zur Datei hinzu } fclose($HTMLFileSave); } }
Nur kommt leider nichts am Ende heraus. Die Datei bleibt Leer Bin programmiertechnisch kein Anfänger, jedoch schreibe ich selten in PHP. Ist der Umgang mit den Arrays falsch?! Hab schon so gut wie alles probiert was mir einfiel, bitte um Hilfe!
lg
Onfängä
-
Was steht denn im "Save"-Fall in $aEditFile?
-
Dasd schrieb:
Was steht denn im "Save"-Fall in $aEditFile?
meinst Du das?
$aEditFile[] = array($EditFileLine);
Hier soll Zeile für Zeile in den Array gespeichert werden.
-
Machs so:
foreach($arr as $key => $value){ fwrite($fp,$value); }
DerOnfängä schrieb:
Dasd schrieb:
Was steht denn im "Save"-Fall in $aEditFile?
meinst Du das?
$aEditFile[] = array($EditFileLine);
Hier soll Zeile für Zeile in den Array gespeichert werden.
ich glaube er meint du sollst es mal mit var_dump() oder so ausgeben lassen.
-
PRIEST schrieb:
Machs so:
foreach($arr as $key => $value){ fwrite($fp,$value); }
DerOnfängä schrieb:
Dasd schrieb:
Was steht denn im "Save"-Fall in $aEditFile?
meinst Du das?
$aEditFile[] = array($EditFileLine);
Hier soll Zeile für Zeile in den Array gespeichert werden.
ich glaube er meint du sollst es mal mit var_dump() oder so ausgeben lassen.
Hö? Also bei den Arrays in PHP bin ich noch nicht durchgestiegen, ich kenne das nur so:
foreach($arr as value){ fwrite(fp,$value);
}Das hatte ich nämlich schon probiert und einen Error erhalten.. anscheinend unterscheidet sich die Array handhabung in PHP erheblich von anderen Sprachen, muss ich mich nochmal einlesen.
Den Befehl var_dump() kannte ich bis gerade eben auch noch nicht, hab immer wild "echos" losgelassen, Danke! Werd ich später mal ausprobieren und anschließend posten was ich in Erfahrung gebracht habe.
-
was kommt denn für ein error?
Naja das mit dem $key in der foreach ist halt schön weil du dann sozusagen eine zählervariable hast die du verwenden kannst.
Kannst dir das so vorstellen:
reset($arr); while (list($key, $value) = each($arr)) { echo "Zähler: $key; Wert: $value<br />\n"; }
Edit::
Empfielt sich immer die php.net page zu besuchen :)! Steht alles schön erklärt.
http://de3.php.net/manual/de/control-structures.foreach.php
http://de3.php.net/manual/de/book.array.php
-
DerOnfängä schrieb:
for($n = 0 ; $n < count($aEditFile); $n++) {
das auf jeden fall schöner weil schneller. allerdings solltest du das count() "cachen" also so ungefähr:
for($n = 0,$l = count($aEditFile); $n < $l; $n++) {
lg lolo
-
axo mir fällt gerade ein, das es evtl. auch mit einem
file_put_contents("filename.php", implode("\n",$aEditFile));
klappen könnte. das sollte schon mehr oder weniger das schnellste sein
lg lolo
-
Aaaalso, ik hab dat janze nochma probiert.
Ich muss sagen ich versteh es nicht, der Fehler liegt wohl in folgendem Codeausschnitt:
while(!feof($HTMLFile)) { $EditFileLine = fgets($HTMLFile); $aEditFile[] = $EditFileLine; echo ($EditFileLine); var_dump($aEditFile[ii]); $ii++; }
Var_Dump gibt immer NULL aus, aber wieso?? "echo(EditFileLine)" gibt die korrekte Zeile aus der Datei aus die zuvor mit fgets eingelesen wird, und darunter hänge ich ja mit der Zeile "aEditFile[] = $EditFileLine;" das ganze an den Array.
Entschuldigung für die komische Namensvergabe bei den Variablen, bin da nicht sehr kreativ.
Danke für die bisherigen Verbesserungen
Gruß
-
Der Array-Index sollte $ii sein.
Aber warum nimmst du nicht gleich file(...)?
http://www.php.net/manual/de/function.file.php