数组到csv在PHP中下载

时间:2018-10-11 17:39:26

标签: php arrays csv download

我正在尝试将PHP中的数组转换为要下载的csv。

当前数组看起来像这样

Array[0] = "Name,age,ID"
Array[1] = "Alex,26,1"
Array[2] = "Ryan,12,2"
Array[3] = "Steph,56,7"

我不确定如何以csv的形式下载此文件,显然每个数组位置是其自己的行,都是csv。

我将标题设置为以下内容:

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");

然后我尝试回显数组的每个元素,希望它能起作用。如下:

header("Content-type: text/csv");
 header("Content-Disposition: attachment; filename=file.csv");
foreach ($lines as &$line) {
   echo $line;
}

$lines是我的数组。

但是,它在csv中完成了所有一行。有没有办法让这个数组在csv中正确打印?

2 个答案:

答案 0 :(得分:3)

您必须添加换行符

echo $line . "\n";

更好

echo $line . PHP_EOL; //constant for correct line-ending depending on OS.

答案 1 :(得分:1)

解决方案之一是fputcsv函数。

header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
$output = fopen('php://output', 'w');
foreach ($lines as $line) {
    $row = explode(',', $line);
    fputcsv($output, $row);
}
fclose($output);