$out_text = "\r\n";
$out_text_body = implode("\r\n", $output_array);
$out_text = $out_text . $out_text_body;
fwrite($han, $out_text);
上面的代码成功地将一堆CSV行存储在一个由新行字符分隔的文件中。正在写入的文件包含一堆CSV行。
问题在于,尽管预先要求使用额外的“\ r \ n”来写入文本,但在新编写的CSV中,新块始终与旧块开始在同一行上。 implodes变量工作正常。
难以理解,但一直看着它,我看不出这个问题,希望这很简单。
丹
答案 0 :(得分:3)
您可以先写一行:
fwrite($han, PHP_EOL);
fwrite($han, $out_text);
作为助手,虽然技术上没关系,但我更有可能这样做:
fwrite($han, PHP_EOL);
foreach( $out_array as $out_text )
{
fwrite($han, $out_text);
}
我通常会保留将大块文本(包括换行符)写入file_put_contents
。从技术上讲,这并不重要,上面的内容更符合PHP 4(虽然我怀疑我们不再关心它了),但它确实有更标准的“感觉”。
答案 1 :(得分:3)
为什么不使用fputcsv()
功能?
它应该为你处理所有这些事情。