2017-12-15 2 views
1
function readWrite() { 
    $fileReader = fopen('file.txt', 'r') or die("ERROR: File not found"); 
    $fileWriter = fopen('filewr.txt', 'w') or die ("ERROR: Write File not 
    found"); 
    $totalDaysArr= array(); 
    $monthNumArr= array(); 
    $monthArr= array(); 
    $row= file("file.txt"); 

    while($row = fgets($fileReader, 4096)) { 
     list($monthNumArr[], $monthArr[], $totalDaysArr[]) = explode(",", $row); 
    } 

    for($x = 11; $x >= 0; $x--) 
    { 
     $table = explode(",", $monthNumArr[$x]); 
     fwrite($fileWriter, $row[$x]); 
    } 
    fclose($fileWriter); 
} 

Ich bin ein Anfänger bei PHP, also das ist, was ich bisher habe. Mein Ziel ist es, eine Funktion zu erstellen, die eine Datei mit dem Namen file.txt liest und sie dann in umgekehrter Reihenfolge mit Arrays schreibt. Ich bin mir nicht sicher, was ich hier falsch mache.PHP lesen und schreiben Datei

Dies sind die Voraussetzungen:

Diese Funktion sollte PHP-Array verwenden, um Datensätze zu speichern (jede Zeile ist eine „record“).

Diese Funktion sollte eine PHP-Schleife verwenden, um durch das Array monats names zu gehen und HTML5/CSS zu generieren, um die Tabelle anzuzeigen.

Erstellen Sie eine Funktion, die die Textdatei filewr.txt (umgekehrte Reihenfolge) schreibt.

Diese Funktion sollte PHP for loop verwenden, um in umgekehrter Reihenfolge durch das Array zu gehen und jeden Arrayeintrag (Zeile/Datensatz) in die Datei filewr.txt zu schreiben.

und auch die txt-Datei sieht wie folgt aus:

1,January,31 

2,February,28 

3,March,31 

4,April,30 

5,May,31 

6,June,30 

7,July,31 

8,August,31 

9,September,30 

10,October,31 

11,November,30 

12,December,31 
+0

Sie vergessen zu erwähnen, was das Problem mit Ihrem aktuellen Code ist. Es würde Leuten helfen, schneller zu antworten, wenn Sie die aktuelle Ausgabe demonstrieren, die Sie erhalten, und/oder irgendwelche Fehler, denen Sie begegnen. – ADyson

+0

sorry, so gibt es mir einen Fehler von "undefined Offset in Zeile 56" so gibt es einen Fehler mit meiner While-Schleife, aber ich weiß nicht, was es – Aureliux

+1

Zeile 56 hilft nicht, da Sie mindestens nicht gepostet haben 56 Zeilen PHP – j08691

Antwort

-1
  1. Warum fileReader verwenden, wenn Sie sich entscheiden, die Daten mit file("file.txt"); am Ende zu lesen?
  2. Der Schreibvorgang ist ziemlich durcheinander fwrite($fileWriter, $row[$x]) ist möglicherweise der Ort, an dem der Fehler kommt: Wollen Sie nicht diese Tabelle in Ihre Datei schreiben anstatt eine Zeile aus der ursprünglichen Eingabedatei?

Zusatz

@Aureliux: Was Sie eine HTML-Zeichenfolge zu generiert werden soll. Beginnen wir also mit $table='<table>' und setzen diese Definition vor die Schleife. Nach der Schleife fügen Sie die Tabellen schließen Tag: $table.='</table>' Die Magie passiert dazwischen: Für jeden Datensatz erstellen Sie die entsprechende HTML-Darstellung. $table.='<tr><td>'.$monthNumArr.'</td><td>'.$monthArr.'</td><td>'.$totalDaysArr.'</td></tr>'. Schließlich verschieben Sie den Schreibbefehl nach der Schleife und schreiben das generierte Tabellen-Markup in Ihre Ausgabedatei.

Was Sie mit Blicken am Ende werden wie

function readWrite() { 
    $fileWriter = fopen('filewr.txt', 'w') or die ("ERROR: Write File not 
    found"); 
    $totalDaysArr= array(); 
    $monthNumArr= array(); 
    $monthArr= array(); 
    $row= file("file.txt"); 

    while($row = fgets($fileReader, 4096)) { 
     list($monthNumArr[], $monthArr[], $totalDaysArr[]) = explode(",", $row); 
    } 

    $table='<table>'; 
    for($x = 11; $x >= 0; $x--) 
    { 
     $table.='<tr><td>'.$monthNumArr.'</td><td>'.$monthArr.'</td><td>'.$totalDaysArr.'</td></tr>'; 
    } 
    $table.='</table>'; 
    fwrite($fileWriter, $table); 
    fclose($fileWriter); 
} 

Ich habe keine Ahnung, warum Sie die Umkehrschleife brauchen würden, aber eigentlich konnte man das gleiche Ergebnis mit weniger Aufwand erreichen:

function readWrite() { 
    $row= file("file.txt"); 

    $table='<table>'; 
    for($x = 11; $x >= 0; $x--) 
    { 
     $table.='<tr><td>'.implode('</td><td>', explode(',',$row[$x])).'</td></tr>'; 
    } 
    $table.='</table>'; 
    file_put_contents('file.txt', $table); 
} 

Ich habe es nicht getestet. Aber die Idee sollte klar sein. Persönlich würde ich @Alive zu sterben zustimmen. Sein Ansatz ist der geradlinigste.

+0

Was ist falsch an dieser Antwort? Ich habe das Gefühl, dass es in die richtige Richtung zeigt. –

+0

Nein, ich stimme zu, dass ich es nicht abgelehnt habe, also sollte ich anstelle von $ row eine ganz neue Variable verwenden? – Aureliux