猿问

这种方法不对,还是有其他更好的方法?求高手指点一下啊

用PHP输出一个csv文件

foreach ($old['lines'] as $line) {     fputcsv($new, $line);
}

比如$line的内容是:

CA,12,Y
MU,13,Y
MU,12,N

我希望的数据:

"CA","12","Y"
"MU","13","Y"
"MU","12","N"

我这样做

foreach ($lines as &$line) {    foreach ($line as &$column) {        $column = '"' . $column . '"';
    }
}

结果出来每一列数据上都被加了两个双引号:

""CA"",""12"",""Y""
""MU"",""13"",""Y""
""MU"",""12"",""N""
繁星淼淼
浏览 107回答 2
2回答

慕标琳琳

比较不正规的方法,若字段中含有双引号,解析的时候会出错:<?php $fp&nbsp;=&nbsp;fopen('php://stdout',&nbsp;'w'); fputcsv($fp,&nbsp;array_map(function&nbsp;($item)&nbsp;{ return&nbsp;'"'&nbsp;.&nbsp;$item&nbsp;.&nbsp;'"'; },&nbsp;array(1,2,'b&nbsp;c','\'ss"')),&nbsp;',',&nbsp;'&nbsp;'); fclose($fp);"1","2",&nbsp;"b&nbsp;&nbsp;c"&nbsp;,"'ss""

红糖糍粑

fputcsv方法有4个参数,如下:fputcsv(file,fields,seperator,enclosure);file 保存的文件名fields 数据数组seperator 字段分隔符,默认是逗号enclosure 字段包围符,默认是双引号你问题的点是第4个参数enclosure,由于你没有传(实际也不用传),默认就是双引号,所以经过你多余的处理后被加了2次。
随时随地看视频慕课网APP
我要回答