3

複数の配列を取得してcsvファイルに入れる必要があるプロジェクトの作業を開始しています。ただし、ファイルを生成していますが、通常は完全に空です (0 b ファイル サイズ)。時折、何かを見逃した場合、エラー メッセージがファイルに書き込まれるか、print_r($array) を実行したかのように配列がファイルに書き込まれることがあります。

現在、私はこれを持っています:

    <?php

// output headers
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=file.csv');


$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');


// output data
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

使用される配列は最終的に生成されますが、ファイルの生成は初めてなので、最初にこれを行いたかったのです。

これについても複数のバリエーションを試しましたが、同じ結果が得られました。これまでのところ、私が考えられる唯一のことは、私が XAMPP を使用していて、その中の fputcsv 関数に問題があるということですが、この問題を抱えている人は他にいません。コードにエラーがありますか、それとも他の場所で問題を探す必要がありますか?

4

2 に答える 2

3

fputcsvCSV データをファイルに書き込むためのものです。
それを STDOUT (echo からのデータが終了する場所) に書き込みたい場合は、ディスクから読み戻すか、 file.csv」に書き込む代わりにphp://stdoutに書き込む必要があります。 .

いずれにせよ、最後に fclose() を忘れないでください。

于 2012-02-07T20:37:05.130 に答える
1

マニュアルの例を試してください:

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
于 2012-02-07T20:36:52.237 に答える