首页 > 解决方案 > PHP - SplFileObject 在第一行写入 CSV

问题描述

如何将以下 CSV 格式的数组写入文件的特定行。我正在使用 PHP LimitIterator来检索我的文件的一部分。

$fields = ['value_1', 'value_2', 'value_3'];
$fileObject = new SplFileObject('my/file/path', 'r+');
$fileObject->setFlags(
    SplFileObject::READ_CSV |
    SplFileObject::SKIP_EMPTY |
    SplFileObject::READ_AHEAD |
    SplFileObject::DROP_NEW_LINE
);
$fileObject->setCsvControl($delimiter, $enclosure);
$iterator = new LimitIterator($fileObject, 5, 100); // Get file content starting at line 5

foreach ($iterator as $index => $row) {
    if (3 === $index) {
        // ...
        // My business logic
        // ...

        // I wanna write at line 8 but actually right at the content at line 9
        $fileObject->seek($iterator->getPosition() - 1); // Retrieve the right position
        $fileObject->fputcsv($fields, $delimiter, $enclosure); // Write of the line after the seek().
    }
}

有谁知道任何方法?我真的被困住了:O

标签: phpcsvsplfileobject

解决方案


推荐阅读