php读写文件

问题描述 投票:1回答: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循环遍历月份名称数组并生成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
php function
1个回答
-1
投票
  1. 为什么在决定最后用fileReader读取数据时使用file("file.txt");
  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。他的方法是最直接的。

© www.soinside.com 2019 - 2024. All rights reserved.