转换csv php时未定义的偏移量


Undefined offset on convert csv php

我有一个小问题转换CSV文件,

文件正在转换,但是收到通知

注意:未定义偏移量:2英寸注意:未定义offset: 4 in

我还需要组$row[2]这是可能的吗?

<?php
$tsvFile = new SplFileObject('file.csv');
$tsvFile->setFlags(SplFileObject::READ_CSV);
$tsvFile->setCsvControl("'t");
$file = fopen('file2.csv', 'w');
$header = array('col1', 'col2');
fputcsv($file, $header, ',', '"');
foreach ($tsvFile as $line => $row) {
    if($line > 0) {
        fputcsv($file, array($row[2], $row[4]), ',', '"');
    }
}
fclose($file);
?>

任何帮助都是感激的。

如果一些行有4个值(列)分隔时,但其他只有1?您的代码假设有固定数量的$row[]元素。如果您执行isset($row[2]),它返回false,那么您知道您不应该尝试访问它,这就是导致通知的原因。

至于为什么没有值分配给那个偏移量,我不能说没有看到CSV。我发现逗号作为分隔符比制表符更好——也许你也有:)

我不太清楚你说的group by是什么意思。您可以很容易地在foreach中添加一个运行总数,或者在另一个数组中使用其中一列作为一个维度保持一个计数,每个维度的总数。