Php 将数据数组保存到CSV文件
我需要将数据数组保存到CSV文件。问题如下:当我打开CSV文件时,我看到数组的0行保存在与标头相同的行中。标题的最后一列也包含0,即“www0”。如何避免这种情况Php 将数据数组保存到CSV文件,php,arrays,csv,fopen,Php,Arrays,Csv,Fopen,我需要将数据数组保存到CSV文件。问题如下:当我打开CSV文件时,我看到数组的0行保存在与标头相同的行中。标题的最后一列也包含0,即“www0”。如何避免这种情况 header("Content-type: text/csv"); header("Pragma: no-cache"); saveCSV($solutionCSV); function saveCSV($data) { $outstream = fopen("schedule
header("Content-type: text/csv");
header("Pragma: no-cache");
saveCSV($solutionCSV);
function saveCSV($data) {
$outstream = fopen("schedule.csv", "a");
$headers = 'xxx, yyy, zzz, www';
fwrite($outstream,$headers);
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals);
}
array_walk($data, "__outputCSV", $outstream);
fclose($outstream);
}
标题后面需要换行符。请注意从单引号到双引号的更改以启用转义
$headers = "xxx, yyy, zzz, www\n";
如果这会使Windows跳闸,请使用\r\n
:
$headers = "xxx, yyy, zzz, www\r\n";
或者,您也可以依靠fputcsv
来编写标题。这可能是最安全的方法,因为它将产生一致的格式
$headers = array('xxx', 'yyy', 'zzz', 'www');
fputcsv($outstream, $headers);
这是一个简单的
foreach
比array\u walk()
更好的地方,特别是如果您没有使用匿名函数,因为对saveCSV()
的第二次调用将导致一个致命的错误,即无法重新声明函数\uu outputcv(),该函数已在…
中声明。从现在开始一年后,当您回到代码中时,foreach
将变得更短、更容易理解,而且效率更高。您的第二个解决方案对我来说很好。最后一个不起作用,我不知道为什么-它在第一行写入数组0。@klausklausos-您在尝试最后一个版本时是否将fwrite
更改为fputcv
?