1

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);

?>

どんな助けでも大歓迎です。

4

1 に答える 1

1

一部の行が区切られたときに4つの値(列)を持ち、他の行が1つしかない場合はどうなりますか?コードは、固定数の$row[]要素を想定しています。そうしてfalseが返された場合はisset($row[2])、アクセスを試みてはいけないことがわかります。これが通知の原因です。

そのオフセットに値が割り当てられていない理由については、CSVを見ないと言えません。区切り文字としてコンマはタブよりもうまく機能することがわかりました-多分あなたも持っています:)

'groupby'の意味がよくわかりません。foreach内に現在の合計を簡単に追加したり、列の1つをディメンションとして使用して、ディメンションごとの合計を使用して別の配列にカウントを保持したりできます。

于 2013-03-08T16:56:42.620 に答える