【问题标题】:PHP fputcsv producing empty filesPHP fputcsv产生空文件
【发布时间】:2012-02-07 20:32:34
【问题描述】:

我正在开始一个项目,该项目需要我获取多个数组并将它们放入一个 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 函数存在一些问题,但我还没有发现其他人有这个问题。我的代码是否有错误,或者我应该在其他地方寻找我的问题?

【问题讨论】:

  • 如果你在顶部设置这样的标题,它不会产生错误吗?
  • 我们能看到你的确切代码吗?大概上面不是您正在运行的内容,因为“创建文件指针...”行将是语法错误。您希望文件输出到磁盘还是 http 客户端?因为您正在写入文件,但设置标题就像您期望它被输出一样。另外,请注意对文件调用 fclose() 是一种很好的做法,尽管在这种情况下您实际上并不需要它,因为您的句柄将在脚本结束时自动关闭。
  • @seanbreeden-到目前为止,无论好坏,它都没有任何区别。

标签: php csv fputcsv


【解决方案1】:

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

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

【讨论】:

  • 或者只使用STDOUT常量
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多