Flysystem/CSV 筛选列的子集

Flysystem/CSV filter a subset of columns

是否可以使用 Flysystem CSV 过滤 CSV 列的子集?

我知道您可以使用 AbstractCsv::addFilter(callable $callback) 添加任意过滤器,但我认为您不会使用它来删除列。

我通过获取要过滤掉的列位置数组解决了这个问题。然后,通过设置一个新的 CSV 对象来写入例如

$new = Writer::createFromFileObject(new \SplTempFileObject);

对于要读取的 CSV,我使用 each 方法遍历其行,使用之前构建的列索引构建新行并插入到新的 CSV 中。记得在each方法中return true;否则不会迭代。

$csv = $csv->newReader();
$csv->setOffset(1);
$csv->each(function ($row) use ($new) {
    ... do stuff to alter the row ...
    $new->insertOne($alteredRow)
});