0

私は配列を持っています:

$remove_rownumbers = array(1, 4, 7, 9, 2);

これらは、PHP で読み込まれた CSV から削除したい行番号です。

今、次のようなカウンターと in_array if ステートメントを使用して、行を調べようと考えています。

$row = 1;
if (($handle = fopen($CSV_FILE, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1500, ",")) !== FALSE) {
       if(in_array($row, $remove_rownumbers) == false) // if its not in the remove array, keep it
       {
         // (...) the output part, where im echoing out each row by foreach($data ...)
       }
       $row++;
    }
}

しかし、今出力されたエコーを取得して、正しいCSVに再度保存するにはどうすればよいですか? そして、このように配列にあった行番号は、この新しいものにはありません

私はそれの始まりを次のように見つけました:

header('Content-Encoding: UTF-8');
header('Content-type: application/ms-excel; charset=utf-8');
header('Content-Disposition: attachment; filename=output.csv');
echo "\xEF\xBB\xBF"; 
$fp = fopen("php://output", "w");
4

1 に答える 1

0

新しい CSV ファイルを fopen() してハンドルを取得する必要がありますが、それは簡単です。

$row = 1;

if ( ($handle = fopen($CSV_FILE, "r")) !== FALSE ) {

    while ( ($data = fgetcsv($handle, 1500, ",")) !== FALSE ) {

        if ( in_array($row, $remove_rownumbers) == false ) {
            fputcsv($newFile, $data);
        }
        $row++;
    }
}

ダウンロードする場所を少し忘れました。新しいファイルへのリダイレクト ヘッダーを使用します。

header("Location: http://www.example.com/newfile.csv");
于 2012-07-04T16:33:38.427 に答える