如何解决PHP fputcsv添加不需要的值
到目前为止,我想用fputcsv下载CSV文件,但是它为流文件(在这种情况下为Do.,Re。,Mi.,Fa)添加了额外的值。
如何防止这种情况发生?
感觉好像我在这里遗漏了一些明显的东西。我在Ubuntu机器上使用没有任何框架的纯PHP 7.4。
非常感谢您的帮助!
class CsvDownload
{
public function downloadFile($data)
{
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=blizzard.csv');
$fh1 = @fopen('php://output','w');
$headerDisplayed = false;
foreach ($data as $row) {
// Add a header row if it hasn't been added yet
if (!$headerDisplayed) {
// Use the keys from $data as the titles
fputcsv($fh1,array_keys($row));
$headerDisplayed = true;
}
// Put the data into the stream
fputcsv($fh1,$row,',');
}
// Close the file
fclose($fh1);
// Make sure nothing else is sent,our file is done
exit;
}
public function execute()
{
//Unwanted
echo "Do.";
echo "Re.";
echo "Mi.";
echo "Fa.";
$data = array(
array('name' => 'A','mail' => 'a@gmail.com','age' => 43),array('name' => 'C','mail' => 'c@gmail.com','age' => 24),array('name' => 'B','mail' => 'b@gmail.com','age' => 35),array('name' => 'G','mail' => 'f@gmail.com','age' => 22),array('name' => 'F','mail' => 'd@gmail.com','age' => 52),array('name' => 'D','mail' => 'g@gmail.com','age' => 32),array('name' => 'E','mail' => 'e@gmail.com','age' => 34),array('name' => 'K','mail' => 'j@gmail.com','age' => 18),array('name' => 'L','mail' => 'h@gmail.com','age' => 25),array('name' => 'H','mail' => 'i@gmail.com','age' => 28),array('name' => 'J','age' => 53),array('name' => 'I','mail' => 'l@gmail.com','age' => 26),);
$this->downloadFile($data);
}
}
$csvDownload = new CsvDownload();
$csvDownload->execute();
解决方法
我找到了解决问题的方法,在使用fputcsv进行任何操作之前,请先使用ob_end_clean()清除缓冲区。
这样,以前的所有回声都不会添加到文件中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。