fputcsv多一列(引号)

时间:2015-09-03 09:58:07

标签: php csv fputcsv

尝试生成CSV时我想在多列中分隔数据但是我只看到A1,A2,A3列中的数据不在b或C中。

如何解决这个问题?

我希望在三个单独的列中使用名称X,年龄X和城市X

这是一些示例代码:

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");
// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies

function outputCSV($data) {
    $output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
    foreach ($data as $row) {
        fputcsv($output, $row); // here you can change delimiter/enclosure
    }
    fclose($output);
}

outputCSV(array(
    array("name 1", "age 1", "city 1"),
    array("name 2", "age 2", "city 2"),
    array("name 3", "age 3", "city 3")
));

编辑:测试功能:

$output = fopen($_SERVER['DOCUMENT_ROOT']."/Project_X/trunk/output/test.csv", 'w');
fputcsv($output, array("hallo;123;4"),";"); // here you can change delimiter/enclosure
fclose($output);

输出为文件:“hallo; 123; 4”而不是hallo; 123; 4

解决了这个问题:

$array = array("hallo;123;4");
$array = str_replace('"', '', $array);
fputcsv($output, $array);

1 个答案:

答案 0 :(得分:4)

您收到此问题的原因是您发送到fputcsv函数的数组只有一个元素。

如果您将数组传递为: 数组(" hallo"," 123"," 1"),然后它将每个数组元素放入相关列。

函数fputcsv获取单个元素的数组,而不是单个数据字符串,然后是要使用的分隔符。在你的情况下是一个分号。使用上面的数组的正确用法是: fputcsv($output, array("hallo", "123", "1"), ';');

即:文件的文件处理程序,单个元素的数组,而不是具有连接字符串的数组,然后是文件中使用的分隔符(如果此处未设置任何内容,将使用逗号)。 / p>