PHP Array Frage (Poll - Script)

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_array_frage_poll_script_153808/page_1 - zur Vollversion wechseln!


nr1 schrieb am 03.12.2005 um 14:35

So also hier zu meinem Code:
Zuerst geht es darum aus einer Textdatei die so aufgebaut ist:

Zitat
Stand1:
1 //Zählerstand1
2 //Zählerstand2
3 //Zählerstand3

Die Werte zeilenweise in ein Array einzulesen, dies habe ich so gemacht:

Code: PHP
	
$text=file('questions.txt');
	for($i=0;$i<count($text);$i++)  
	$line[]=(int)$text[$i];

Weiters kommt folgende Prozedur, in der auf ein bestimmtes Ereignis reagiert wird, und die den dazugehörigen Zählerstand erhöht:
Code: PHP
switch ($q1)
{
case 1: $line[1]++; break;
case 2: $line[2]++; break;
case 3: $line[3]++; break;
}

Und jetzt kommt das Problem: Ich möchte die neuen Zählerwerte wieder im selbe Format (in jeder Zeile nur einen Zählerstand rausschreiben)
Bis jetzt mache ich folgendes:
Code: PHP
$file=fopen('questions.txt','w');	
for($i=0;$i<count($line);$i++) 
	fwrite($file,$line[$i],strlen($line[$i])+1);
fclose($file);
was zur Folge hat, dass zwar alle Werte wieder rausgeschrieben werden, jedoch alle in einer Zeile. Das heißt für mich, ich brauche zusätzlich einen „\n“ Tag. Nur wo bzw wie kann ich den zu jeder Zeile hinzufügen, wenn ich nur ein Integer Array habe?
Wenn ich das Array ganz normal als String Array lasse, kann ich die einzelnen Elemente nicht inkrementieren…

Bitte um Hilfe!


Frys_Assassin schrieb am 03.12.2005 um 14:51

So rein ausm Stehgreif hätt ich gesagt:

Code: PHP
$file=fopen('questions.txt','w');    
for($i=0;$i<count($line);$i++)
    fwrite($file,$line[$i]."\n",strlen($line[$i])+1);
fclose($file);
Oder stören ihn da die unterschiedlichen Typen?


nr1 schrieb am 03.12.2005 um 15:39

ich hab das schon so wie in deinem Code dazugefügt, allerdings passiert dann nichts, weil das Array ja ein Integer Typ ist


COLOSSUS schrieb am 03.12.2005 um 15:42

Wie waer's mit Serialisierung?


nr1 schrieb am 03.12.2005 um 15:50

Zitat von COLOSSUS
Wie waer's mit Serialisierung?

keine ahnung wie das in php funzen sollte


Facetious schrieb am 03.12.2005 um 15:56

http://www.professionelle-softwaree...ialization.html

grad gefunden
hth Facetious


nr1 schrieb am 03.12.2005 um 15:57

hmm ja das schaut zwar schön aus, aber ich kann mir nicht vorstellen, dass ich damit weiterkomme..


mat schrieb am 04.12.2005 um 22:36

Code: PHP
$file=fopen('questions.txt','wt');     
for($i=0;$i<count($line);$i++)
{
    $newline = $line[$i]."\n\r";
    fwrite($file,$newline,strlen($newline)); 
}
fclose($file);
versuchs mal damit.. binaryfiles sind in php ein graus (auch wenn du von deinen posts her sowieso ein textfile willst :confused:). mit textmode gibts aber auch ein paar probleme. zB macht fwrite aus jedem \r\n (das eigentlich crlf in windows) ein \n\n.

wie auch immer, liegt wahrscheinlich auch an ein paar phpeinstellungen, vl ists ja auch ein bug.

wenn du allerdings kein (von dir) lesbares textfile brauchst, dann rate ich dir zu einem separator a la '|', einfach ein zeichen, dass du nicht verwenden wirst. dann kannst du das eingelesen file einfach explode()'en..


nr1 schrieb am 04.12.2005 um 23:05

habs inzwischen mit Hilfe von delphi-praxis.net geschafft

Code: PHP
$file = fopen('questions.txt', 'w');   
for ($i=0; $i < count($line); $i++)
{
    fwrite($file, $line[$i] . "\n", strlen($line[$i]) + 1);
}
fclose($file);

man muss nur aufpassen, weil der normale Editor die Datei falsch darstellt (keine zeilenumbrüche)


atrox schrieb am 08.12.2005 um 14:19

dem geneigten coder werden die funktionen implode und explode nahegelegt...
http://www.php.net/implode
http://www.php.net/explode

übrigens: ohne file-locking ( zb flock() ) könnten zwei scripts gleichzeitig in die datei schreiben und so den inhalt korrumpieren.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026