1

早上好,

我正在开发一个脚本来创建一个 csv 文件。我的问题是csv文件的分隔符,我需要使用“;”。

我读到我必须使用“setcsvcontrol()”,但我正在尝试使用它,但没有任何结果。

这是我的脚本的一部分:

$create = fopen($fecha."p.csv", "a");
$file = new SplFileObject($fecha."p.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(';');

foreach($cadena as $fields){    

    fputcsv($create,$fields);
}

谢谢。

4

2 回答 2

1

SplFileObject::setCsvControl()仅影响调用它的$file对象,即您的情况下的对象。它不会影响您从中获取的$create对象fopen,即使两个对象都对同一个文件进行操作。

使用 写入$create对象fputcsv($handle, $fields, $delimiter, $enclosure),作为第一个参数传递$create,所需的分隔符和附件作为第三个和第四个参数传递,或者调用$file->fputcsv(). 在后一种情况下,您必须使用SplFileObject合适的$open_mode.

于 2013-06-23T13:09:32.960 回答
0

您没有将分隔符传递给fputcsv;

fputcsv($create,$fields, ";");

您也可以安全地删除

$file = new SplFileObject($fecha."p.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(';');

如果您必须使用SplFileObject然后将您的代码更改为。

$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::WRITE_CSV);
$file->setCsvControl(';');
foreach ($rows as $row) {
    $file->fputcsv($row);
}
于 2013-06-23T12:57:55.593 回答