我有以下函数从数据库查询中获取结果数组。当我遍历查询结果时,我填充数组。同时我创建了一个html表。在输出html表之后,我调用函数download_csv($ csvArray),但没有发生CSV的下载,它只是显示数组的内容,好像我在数组上做了一个var_dump。我可以确认数组的内容是否正确。
注意:这是在外部网页上完成的,而不是来自管理区域。
是否需要调用一些wordpress函数来允许下载或者我遗漏了什么?
function download_csv($csvArray) {
$file_name = 'report.csv';
//output headers so that the file is downloaded rather than displayed
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=$file_name");
//Disable caching - HTTP 1.1
header("Cache-Control: no-cache, no-store, must-revalidate");
//Disable caching - HTTP 1.0
header("Pragma: no-cache");
//Disable caching - Proxies
header("Expires: 0");
//Start the ouput
$output = fopen("php://output", "w");
//Then loop through the rows
foreach ($csvArray as $fields) {
fputcsv($output, $fields);
}
//Close the stream off
fclose($output);
die();
}
答案 0 :(得分:1)
以下代码可帮助您将数组转换为CSV并使其自动下载更改模具();函数exit();并使用Implode功能。它会起作用。
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=sample.csv');
header('Pragma: no-cache');
header('Expires: 0');
$fp = fopen('php://output', 'w');
//ex: $list={...};
foreach ($list as $fields)
{
fputcsv($fp,implode($fields, ','));
}
fclose($fp);
exit();