在foreach循环中为CSV开始一个换行符?

问题描述:

我需要在每次循环时添加一行,并添加到正在生成的CSV文档中。在foreach循环中为CSV开始一个换行符?

代码:

if(is_array($results_top_pages->getRows())){ 
     $name = rand(); 
     $myfile = fopen("bin/".$name.".csv", "w") or die("Unable to open file!"); 
     foreach($results_top_pages->getRows() as $top_page){ 
      $txt = array($top_page[0]. ",".$top_page[1]); 
      fputcsv($myfile, $txt); 
     } 
     fclose($myfile); 
    } 

我曾尝试以下:

- array($top_page[0]. ",".$top_page[1]. "\n"); 
- array($top_page[0]. ",".$top_page[1]. "\r\n"); 
- array($top_page[0]. ",".$top_page[1]. "<br>"); 

以及与'',而不是""

仍然没有运气上述所有。在Excel中打开时,生成的所有内容都是一行。

在此先感谢。

+0

http://stackoverflow.com/questions/16520282/csv-new-line-character也许这? – briosheje 2015-04-01 08:48:20

+0

先放逗号,然后放\ r \ n – 2015-04-01 08:49:27

它应该检测行结束。从putcsv doc

注:如果在读文件打开或创建时由Macintosh计算机PHP没有正确认识到行结尾,使auto_detect_line_endings运行时配置选项可能有助于解决这个问题。

希望这会有所帮助。

失去$txt = array($top_page[0]. ",".$top_page[1]);引述逗号而是执行此操作:

$txt = array($top_page[0], $top_page[1]); 

fputcsv自动将行尾。在你的例子中你实际做的是发送一个元素数组。