PHP fputcsv生成空文件

时间:2012-02-07 20:32:35

标签: php csv fputcsv

我开始研究一个项目,该项目要求我将多个数组放入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函数存在一些问题,但我没有找到任何其他人遇到此问题。我的代码中是否有错误,或者我是否应该在其他地方寻找我的问题?

2 个答案:

答案 0 :(得分:3)

fputcsv用于将CSV数据写入文件 如果你想把它写到STDOUT(这是来自echo的数据结束的地方),你要么必须从磁盘上读回来,而不是写入“file.csv”,写信给php://stdout

无论哪种方式,最后都不要忘记fclose()。

答案 1 :(得分:1)

尝试manual中的示例:

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