php-fputcsv,新行未插入到行尾

php-fputcsv,新行未插入到行尾,php,csv,Php,Csv,我有一个数组,我正在尝试将数组插入csv文件 这是我的密码 $file = 'a.csv'; //path to the file on disk $fp = fopen($file, 'w') or die('Cannot open file: '.$file); foreach ($column as $fields) { print ($fields); fputcsv($fp, $fields); } fclose($fp); 数据是这样的 $column =

我有一个数组,我正在尝试将数组插入csv文件

这是我的密码

$file = 'a.csv'; //path to the file on disk


$fp = fopen($file, 'w') or die('Cannot open file:  '.$file);
foreach ($column as $fields) {
    print ($fields);
    fputcsv($fp, $fields);
}

fclose($fp);
数据是这样的

$column = (
       (1,2,3), (a,b,c)
)
我想要这样的输出

1,2,3
a,b,c
1,2,3,a,b,c
但我得到的输出是这样的

1,2,3
a,b,c
1,2,3,a,b,c

我想您需要添加一行新代码:

print($fielsd."\n") // if the aoutput is console
print($fields."<br/>") // in case of html output

因为fputscsv由新行分隔

fputcsv将作为字段数组传递的行格式化为CSV,并将以换行符结尾的行写入指定的文件句柄

您的数据输入必须更改以匹配所需的格式

$column = (
   (1,2,3) , (a,b,c)
)
修改或操作代码以获取所需的格式

$column = array (
    array('1', '2', '3', '4'),
    array('a', 'b', 'c')

);
对于我来说,有太多的方法可以做到这一点,而不需要从开始文件中获得实际的a.csv输出,但是我想explode会很好地完成这项工作。这将根据fputscsv的工作需要在阵列中放置阵列列表

$columns[] = explode("),(");
这是一个使用数据库输出的示例

$result = $connect->prepare("SELECT type_id, label, type, description FROM content_types WHERE type_id='". $args[0] ."'");
        $result->execute();
        $data = $result->fetchALL(PDO::FETCH_ASSOC);

$columns[] = $data;

也可以查看原始帖子并回答一个问题。

应该可以。还有一个代码负责编码

 $filename = ''; // $filename = 'something.csv';
 $chosen = array(); 
  /* $chosen = array (
  *    array('ąąąą', 'źźźź', 'ęeęę', 'óóó'),
  *    array('łłłłł','żżżż', '1111', '22222')
  );*/

$file = fopen($filename, 'w');

foreach ($chosen as $row) {
  fputs($file, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) ));
  fputcsv($file, $row);
}

fclose($file);
输出

ąąąą,źźźź,ęeęę,óóó
łłłłł,żżżż,1111,2222

你能试着在最后一个字段的末尾添加PHP\u EOL吗。

我最近想知道如何使用fputcsv获得一个新行,因此遇到了这篇文章。我通过使用fwrite添加新行解决了这个问题

    $aKeys = array_keys($aDataKeys);
    $rTmpFile = fopen('php://temp', 'rw');
    fputcsv($rTmpFile, $aKeys);
    foreach ($aData as $aRow ) {
        fwrite($rTmpFile,"\r\n"); //<------Add a new line
        fputcsv($rTmpFile, $aRow);
    }
    rewind($rTmpFile);
    $sCsv = stream_get_contents($rTmpFile);
    fclose($rTmpFile);

你的问题是什么?新行未插入到输出csv文件或浏览器中?新行未插入到csv文件中可能是因为有一个\n作为新行,而您的编辑器只是不理解像notepad.exe这样的内容?我在Excel中打开它实际上逗号位于两行之间SOP说文件中没有新行。文件中没有新行,但如果你想在新行上打印每一行,你需要自己添加。是的,我不反对。但这仍然不能回答这个问题。不获取createdIt的文件必须。考虑到filename变量为空以及数组。取消对它们的注释或将您的数据放到当前数据。是的,我这样做了。我给出了文件名和数据名。这对我来说很好。可能你做错了什么。我写的代码是这样的$file\u name=download.csv$file=fopen$file\u name,w$i=0;foreach$列为$字段{//print$字段;foreach$字段为$data{if$i!=3{fputs$file,$data.,;$i++;}否则{fputs$file,$data.\n;$i=0;}}fclose$file;}格式已更改。还是一样。我正在使用数组。我正在从数据库读取数据,并将结果转换为数组。然后我尝试将数据写入一个文件,需要从数据库获取结果代码,或者将实际数组设置为file。数据库结果可以是数组或对象。此输出应放置在容器数组中。这不是自动发生的。您需要根据需要操纵结果。