2017-12-15 18 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); 
} 

私はこれまでのところPHPで初心者です。私の目的は、file.txtというファイルを読み込んで配列を使って逆に書き込む関数を作ることです。私はここで何が間違っているのか分かりません。phpの読み書きファイル

この関数は、レコードを格納するためにPHPの配列を使用する必要があります(各行が「記録」である):

これらは、要件です。

この関数はPHPループを使用して月名配列を処理し、HTML5/CSSを生成して表を表示する必要があります。

テキストファイルfilewr.txt(逆順)を書き込む関数を作成します。

この関数は、PHP forループを使用して配列を逆順に処理し、各配列エントリ(行/レコード)をfilewr.txtファイルに書き込む必要があります。

ともtxtファイルには、次のようになります。

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

あなたの現在のコードで何が問題なのか忘れてしまった。あなたが現在の出力を実証すれば、そして/またはあなたが遭遇している間違いがあれば、人々はより速く答えることができます。 – ADyson

+0

申し訳ありませんが、私には "undefined offset on line 56"のエラーが表示されますので、whileループでエラーが発生しましたが、それは – Aureliux

+1

を参照しているか分かりません。あなたの投稿したコードの56行に相当する56行のPHP – j08691

答えて

-1
  1. あなたが最後にfile("file.txt");でデータを読み取ることが決定したときに、なぜfileReaderを使うのか?
  2. 書き込みプロセスがかなり乱雑になっていますfwrite($fileWriter, $row[$x])は、エラーの原因となる可能性があります。オリジナルの入力ファイルの行ではなく、そのテーブルをファイルに書き込むことを目指していませんか?

追加

@Aureliux:あなたがHTML文字列を生成しているためにしたいどのような 。 したがって、$table='<table>'で始まり、ループの前にこの定義を入れてください。 ループの後でタグを閉じるタグを追加します。$table.='</table>' 魔法は次の間で発生します。 各レコードについて、対応するHTML表現を作成します。 $table.='<tr><td>'.$monthNumArr.'</td><td>'.$monthArr.'</td><td>'.$totalDaysArr.'</td></tr>'。 最終的にループの後にwriteコマンドを移動し、生成されたTable Markupを出力ファイルに書き込みます。あなたは

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); 
} 

のようなルックスで終わるだろう何

私はあなたが逆のループを必要とするだろうが、実際には、あなたがより少ない労力で同じ結果を達成できる理由は考えていません:

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); 
} 

私はそれをテストしなかった。しかし、アイデアははっきりしているはずです。 個人的には、@ Alive to Dieに同意します。彼のアプローチは最も単純です。

+0

その答えに何が問題なのですか?いいえ、私はしなかったダウン投票して同意していないので、代わりに$行の私は完全に新しい変数を使用する必要があります –

+0

それは正しい方向を指すような気が? – Aureliux

関連する問題