在foreach循环中启动CSV的换行符?

时间:2015-04-01 08:47:18

标签: php arrays csv

我需要在每次循环时开始一个新行并添加到生成的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中打开时,生成的所有内容都是一行。

提前致谢。

2 个答案:

答案 0 :(得分:0)

应检测行结尾。来自putcsv doc

  

注意:如果在Macintosh计算机上读取文件或由Macintosh计算机创建文件时,PHP无法正确识别行结尾,则启用auto_detect_line_endings运行时配置选项可能有助于解决问题。

希望这有帮助。

答案 1 :(得分:0)

$txt = array($top_page[0]. ",".$top_page[1]);中丢失引用的逗号:改为执行此操作:

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

fputcsv自动输入行结尾。您在示例中实际执行的操作是发送单个元素数组。