在PHP中下载数组到csv

在PHP中下载数组到csv,php,arrays,csv,download,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:

我正在尝试将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格式正确打印吗?

您必须添加换行符

echo $line . "\n";
更好

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

你必须添加一个换行符

echo $line . "\n";
更好

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

解决方案之一是
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);

解决方案之一是
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);

@PatrickQ完成了,只是一个基本的回显,不认为需要。
echo“$line\n”
echo
不会自动在内容末尾添加换行符。您必须明确地这样做。@PatrickQ done,只是一个基本的回显,并不认为需要它。
echo“$line\n”
echo
不会自动在内容末尾添加换行符。您必须明确地这样做PHP\u EOL
echo$line,PHP\u EOL