Array in txtdatei schreiben

Alles, was PHP betrifft, kann hier besprochen werden.

Array in txtdatei schreiben

Postby newby » 09. February 2007 15:14

hallo, ich hab ein problem, ich möchte ein array in eine textdatei schreiben, in der textdatei steht dann aber immer nur 'Array'. Hier mein Code:

Code: Select all
$variable = file($pfad);

$dz = fopen($pfad, "w");
fwrite($dz, $variable);
fclose($dz);


erst lese ich die datei $pfad aus und schreibe dann den inhalt neu hinein. Statt des Inhaltes steht da dann nur array, was muss ich machen?

ich vermute mal das das für euch kein problem ist
newby
 
Posts: 105
Joined: 16. July 2006 10:53

Postby Wiedmann » 09. February 2007 15:26

Was erwartest du denn, wie es dann in der textdatei steht (anhand eines Beispieles) und was willst du mit dieser Datei machen?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby newby » 10. February 2007 13:36

sagen wir das ist meine txtdatei:
Code: Select all
Zeile 1
Zeile 2
Zeile 3


Die Datei lese ich dann mit $variable = file($pfad); aus! ($pfad ist der pfad zu der datei!)

jetzt überschreibe ich die datei mit fwrite($dz, $variable);!

Jetzt soll die datei so aussehen:
Code: Select all
Zeile 1
Zeile 2
Zeile 3


Warum geht das nicht?
newby
 
Posts: 105
Joined: 16. July 2006 10:53

Postby Wiedmann » 10. February 2007 14:42

newby wrote:Warum geht das nicht?

Also technisch ist das recht einfach anhand des Manuals erklärt:

newby wrote:jetzt überschreibe ich die datei mit fwrite($dz, $variable);!

Schauen wir uns mal das Manual an:
PHP-Manual wrote:int fwrite ( resource $handle, string $string [, int $length] )

fwrite() erwartet als 2. Parameter also einen String. Jetzt die Frage, wie kommt bei dir $variable zu seinem Inhalt? Das ist hier:

newby wrote:Die Datei lese ich dann mit $variable = file($pfad); aus!

Schauen wir uns mal das Manual an:
PHP-Manual wrote:array file ( string $filename [, int $use_include_path [, resource $context]] )

Also enhält $variable also keinen String wie es fwrite() erwartet, sondern ein Array (auch wenn ein Array natürlich wiederum mehrere Strings enthalten kann, in seinen Keys).

in der textdatei steht dann aber immer nur 'Array'.

Du hast also ein (komplettes) Array direkt einem String zugewiesen, PHP führt hier dann eine automatische Typekonvertierung durch. Was das Konvertieren zu einem String angeht, steht im Manual folgendes:
PHP-Manual wrote:Arrays werden immer in den String "Array" umgewandelt. Sie können also den Inhalt eines Arrays nicht mit echo() oder print() ausgeben, um zu sehen, was es enthält. Um ein Element anzuschauen, benötigen Sie etwas in der Art echo $arr['foo']. Siehe weiter unten für Hinweise zur Ausgabe/Ansicht des kompletten Inhalts.

(print, echo erwarten wie fwrite einen String den sie ausgeben können)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby newby » 10. February 2007 14:46

ok, danke, aber wie kann ich eine txtdatei quasie kopieren und an eine andere txtdatei anhängen?
newby
 
Posts: 105
Joined: 16. July 2006 10:53

Postby Wiedmann » 10. February 2007 14:55

Na wenn du jetzt schon weist das fwrite() einen String als Parameter erwartet, würde ich mir überlegen, ob es auch eine Funktion gibt die eine Datei in einen String einliest und nicht in ein Array.

Eine weitere Lösung steht eigentlich schon oben in meiner Anwort (letzter Absatz): du musst jedes Array-Element einzeln abspeichern (jedes Array-Element für sich ist ja ein String)

Auch noch möglich wäre, alle Array-Elemente wieder zu einem String zu verbinden und diesen dann abzuspeichern.

BTW:
Wenn du was Anhängen willst, stimmt natürlich der eine Parameter in fopen() nicht.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby newby » 10. February 2007 15:03

ok, das heißt ich schreibe eine schleife die alle array elemente ausließt und dann wieder in die andere datei schreibt?

Dafür müsste ich dann wissen wie groß das array ist! gibt es eine funktion um das zu überprüfen?
newby
 
Posts: 105
Joined: 16. July 2006 10:53

Postby Wiedmann » 10. February 2007 15:10

ok, das heißt ich schreibe eine schleife die alle array elemente ausließt und dann wieder in die andere datei schreibt?

Bei der 2 Lösung, ja.

Dafür müsste ich dann wissen wie groß das array ist!

Nicht unbeding. Kommt darauf an wie/mit was du deine Schleife machst. (siehe "Kapitel 16. Kontroll-Strukturen" im PHP-Manual)

gibt es eine funktion um das zu überprüfen?

Unter "V. Array Funktionen" im PHP-Manual ist da was dafür aufgeführt.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby newby » 10. February 2007 15:12

ok, dank dir ! hab die funktion count() im manual gefunden!
newby
 
Posts: 105
Joined: 16. July 2006 10:53


Return to PHP

Who is online

Users browsing this forum: No registered users and 10 guests