Php fputcsv多个列(引号)

Php fputcsv多个列(引号),php,csv,fputcsv,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-stor

当试图生成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;四,

解决方法如下:

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

出现此问题是因为发送到
fputcsv
函数的数组只有一个元素

如果以以下方式传入数组: 数组(“hallo”、“123”、“1”),然后它会将每个数组元素放入相关列中

函数
fputcsv
获取单个元素的数组,而不是单个数据字符串,然后使用分隔符。在你的例子中是分号。使用上述阵列的正确用法是: fputcsv($output,array(“hallo”、“123”、“1”)、“;”)


也就是说:文件的文件处理程序,单个元素的数组,而不是带有串联字符串的数组,然后是要在文件中使用的分隔符(如果此处未设置任何内容,则将使用逗号)。

您会遇到此问题,因为发送到
fputcsv
函数的数组只有一个元素

如果以以下方式传入数组: 数组(“hallo”、“123”、“1”),然后它会将每个数组元素放入相关列中

函数
fputcsv
获取单个元素的数组,而不是单个数据字符串,然后使用分隔符。在你的例子中是分号。使用上述阵列的正确用法是: fputcsv($output,array(“hallo”、“123”、“1”)、“;”)


也就是说:文件的文件处理程序,单个元素的数组,而不是带有串联字符串的数组,然后是要在文件中使用的分隔符(如果此处未设置任何内容,则将使用逗号)。

如何查看生成的文件?您意识到MS Excel在读取csv文件时使用特定于区域设置的分隔符,因此有时可能需要使用
,有时是
,这取决于用于查看您生成的文件的MS Excel版本的区域设置一个解决方案是“告诉”MS Excel正在使用什么分隔符;使文件的第一行
sep=,
。。。。但是,如果导入程序scriptsThanks在其他地方使用该文件以获取它的注释,这将是不好的;但是,在区域设置上,它将“test;1;2;3”而不是test;1.2.3(没有报价)?我重新编辑了帖子并添加了一个测试函数在您的测试中,而不是
fputcsv($output,array(“hallo;123;4”),“;”)
array(“hallo;123;4”)
正在创建一个仅包含一个字符串元素的数组,因此它将仅将其作为单元格a1的单个元素写入,您如何查看生成的文件?您意识到MS Excel在读取csv文件时使用特定于区域设置的分隔符,因此有时可能需要使用
,有时是
,这取决于用于查看您生成的文件的MS Excel版本的区域设置一个解决方案是“告诉”MS Excel正在使用什么分隔符;使文件的第一行
sep=,
。。。。但是,如果导入程序scriptsThanks在其他地方使用该文件以获取它的注释,这将是不好的;但是,在区域设置上,它将“test;1;2;3”而不是test;1.2.3(没有报价)?我重新编辑了帖子并添加了一个测试函数在您的测试中,而不是
fputcsv($output,array(“hallo;123;4”),“;”)
array(“hallo;123;4”)
正在创建一个仅包含一个字符串元素的数组,因此它将仅将其作为单元格A1的单个元素写入