php读写文件

时间:2017-12-15 15:46:00

标签: php function

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循环遍历月份名称数组并生成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

1 个答案:

答案 0 :(得分:-1)

  1. 为什么在决定最后使用fileReader阅读数据时使用file("file.txt");
  2. 写作过程非常混乱fwrite($fileWriter, $row[$x])很可能是错误来自的地方:你不打算将该表写入文件而不是原始输入文件中的一行吗?
  3. <强>加成

    @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。他的方法是最直接的。