我复制了一个传递数组和临时下载文件的函数。该数组中有很多东西(它来自一个简单的select * from table query),该文件位于一个具有777权限的空文件夹中。
function array_to_csv($array, $download) {
ob_start();
$f = fopen($download, 'wb') or show_error("Can't open php://output");
$n = 0;
foreach ($array as $line)
{
$n++;
if (!fputcsv($f, $line))
{
show_error("Can't write line $n: $line");
}
}
fclose($f) or show_error("Can't close php://output");
$str = ob_get_contents();
ob_end_clean();
echo $str;
}
它运行没有错误,并为我的数组中的每一行调用fputcsv几百次。
然而,当它到达结束并获得输出缓冲区str为空时。这是文件问题还是缓冲区问题?当我查看文件夹时,那里什么都没有。应该有吗?
答案 0 :(得分:1)
然而,当它到达结束并获得输出缓冲区str为空时。这是文件问题还是缓冲区问题?
问题是你没有输出(echo
,print_r
,var_dump
等等。它一直是空的。
如果您想看到整个图片修改为
function array_to_csv($array, $download) {
ob_start();
$f = fopen($download, 'wb') or show_error("Can't open php://output");
$n = 0;
foreach ($array as $line)
{
echo $line;
$n++;
if (!fputcsv($f, $line))
{
show_error("Can't write line $n: $line");
}
}
fclose($f) or show_error("Can't close php://output");
$str = ob_get_clean();
echo $str;
}