2012-02-07 81 views
1

我开始研究一个需要多个数组并将它们放入一个csv文件的项目。但是,虽然它正在生成文件,但它通常完全是空的(0 b文件大小)。有时候,如果我错过了某些东西,它会将错误信息放在文件中,或者几次将数组放入文件中,就好像我已经完成了print_r($ array)一样。PHP fputcsv生成空文件

目前,我有这样的:

<?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函数存在一些问题,但我还没有发现任何其他人有这个问题。在我的代码中是否有错误,或者我应该在别处寻找我的问题?

+0

如果你在顶部设置你的标题,它会不会产生一个错误? – seanbreeden 2012-02-07 20:37:06

+0

我们可以看到您确切的实际代码吗?大概上述不是你正在运行,因为“创建文件指针...”行将是一个语法错误。您是否期望将文件输出到磁盘或HTTP客户端?因为你正在写一个文件,但是设置头像就像你期待的那样输出。另外,请注意,最好在文件上调用fclose(),尽管在这种情况下实际上并不需要它,因为您的句柄将在脚本结束时自动关闭。 – 2012-02-07 20:41:07

+0

@ seanbreeden-到目前为止,我无论做得好还是坏,都没有任何区别。 – LucenNox 2012-02-07 20:44:17

回答

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

fputcsv是为写CSV数据到文件
如果您想将其写入STDOUT(这是回声数据的结束位置),您必须从磁盘中读取它,而不是写入“file.csv”,请写入php://stdout

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

+0

或者只是使用'STDOUT'常量 – Gordon 2012-02-07 20:39:52

+0

经过一些调整和谷歌的大量帮助后,我设法得到这个工作。谢谢。 – LucenNox 2012-02-08 00:11:16