我有一个转换csv文件的小问题,
该文件正在转换,但正在收到通知
注意:未定义的偏移量:2英寸 注意:未定义的偏移量:
中的4另外我需要按$ 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);
?>
感谢任何帮助。
答案 0 :(得分:1)
如果某些行在分隔时有4个值(列)但其他行只有1个怎么办?您的代码假定固定数量的$ row []元素。如果你执行isset($row[2])
并且它返回false,那么你知道你不应该尝试访问它,这是导致通知的原因。
至于为什么没有为该偏移分配值,我不能不看CSV。我发现逗号比分隔符更好地作为分隔符 - 也许你也有:)
不完全确定我知道'group by'的意思。您可以轻松地在foreach中添加一个运行总计,或者使用其中一个列作为维度,使用每个维度的总数在另一个数组中保留计数。