写入两列的CSV文件

时间:2010-01-02 00:23:27

标签: php file csv

我正在尝试创建CSV文件。我做到了这一点。我把下面的内容放在循环外面的第一行和最后一行。

$FileHandle = fopen('tech.csv', 'a+') or die("can't open file");
$stringa = $item." , ".$item2."\r\n";
fwrite($FileHandle, $stringa);
fclose($FileHandle);

但是,它在CSV文件中显示如下:

a
b

c
d

而不是我想要的方式:

a b
c d

基本上是两列而不是一列。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我真的希望你不要在每次迭代中打开和关闭文件,因为这会给文件系统带来真正的压力。相反,你可以这样做:

$csv = array();
foreach($myData as $row) {
    $csv[] = trim($row['item1']).','.trim($row['item2']);
}
file_put_contents('tech.csv', implode("\r\n", $csv), FILE_APPEND);

或者,您可以使用fputcsv功能:

$fp = fopen('tech.csv', 'a+');
foreach($myData as $row) {
    fputcsv($fp, array(trim($row['item1']), trim($row['item2']));
}    
fclose($fp);

答案 1 :(得分:3)

您是否使用fgets()从文件/流中读取这些值?然后尾随换行符是字符串的一部分。使用trim()删除换行符。

您可能也对函数fputcsv()感兴趣。