如何使用PHP从csv文件编写和获取所需的正确值?

时间:2018-08-13 06:58:56

标签: php csv fopen

以前,我有两个桌子。 我有一个php脚本,可以将一个表的内容复制到表2,以标识要复制的ID,我制作了一个CSV文件,以检查插入ID的最后一行,如下所示:

-t

以前,我通过使用fopen分别为0和1来使用csv的索引检查最后一个ID。

但是现在我还有另一个表3要复制到表2,并且过程相同。但是,当我为新表编写时,它会被覆盖,因此我无法识别上一个表。如果我追加它,文件将得到扩展。有什么办法可以将表1的内容放在第一行,将表2的最后一个id放在第二行,作为

 "Date",lastid(int)

并为表1取0、1,为表2取2,3,即使先完成表2。

  "Date",lastid(int), // for t1 copied to t2
  "Date",lastid(int)  // for t3 copied to t2

通过

调用
public function writeNumberOfRowsCopiedForTable2FromTable1($row_write)
{
    $file = fopen('rowsCopied.csv', 'w+');
    fputcsv($file, $row_write);
    fclose($file);

}

从t1中获取t2中插入值的值

writeNumberOfRowsCopiedForTable2FromTable1([$this->global_date, $last_row_copied]);

希望我解释了这个问题。 有人知道答案吗?

1 个答案:

答案 0 :(得分:0)

我写了一些方法,这些方法应该可以满足您的需求。您需要将它们与您当前的使用方式集成在一起,但这只是为了我可以自己对其进行测试。

每个方法都有一个$rowNumber参数,这是存储文件中要为其设置/获取值的行。在代码中它会对其进行调整,因此第1行实际上是数组的元素0。我使用file()读取整个文件,然后获取/设置您感兴趣的行。在writeNumberOfRowsCopied方法中,然后使用file_put_contents()将整个文件写成一个转到(插入文件的行)。

function writeNumberOfRowsCopied($rowNumber, $row_write)
{
    $fileName = 'rowsCopied.csv';
    $file = file($fileName, FILE_IGNORE_NEW_LINES);

    $file[$rowNumber-1] = implode(",", $row_write);
    file_put_contents($fileName, implode(PHP_EOL, $file));
}

function getLastRowCopied($rowNumber)
{
    $fileName = 'rowsCopied.csv';
    $file = file($fileName, FILE_IGNORE_NEW_LINES);

    $row = explode(",", $file[$rowNumber-1]);
    return (int)$row[1];
}
writeNumberOfRowsCopied(2, ["aa", 22121]);
print_r(getLastRowCopied(2));