PHP - 将二维数组写入 CSV 文件但神秘地将“0,1,2,3,4,5,6,7,8,9”作为第一行?
PHP - Writing 2d array to CSV file but mysteriously getting "0,1,2,3,4,5,6,7,8,9" as first row?
我正在尝试使用此处描述的以下功能编写 .csv 文件:
Export to CSV via PHP
这是函数:
function array2csv(array &$array)
{
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen('/path/to/file.csv', 'w');
fputcsv($df, array_keys(reset($array)));
foreach ($array as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}
我这样称呼它:
array2csv($array);
其中$array[0]
(所有其他值均遵循此格式)如下:
array(10) {
[1]=>
string(19) "2015-03-01 00:09:01"
[2]=>
string(11) "1234567890"
[3]=>
string(2) "26"
[7]=>
string(7) "0.10102"
[8]=>
string(12) "TESTING THIS"
[9]=>
}
我已经纠结了一段时间,现在想弄清楚为什么我在 .csv 文件中得到如下输出:
0,1,2,3,4,5,6,7,8,9
"2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS"
... etc ...
在做研究时没有真正看到任何其他类似的问题,我自己也不明白为什么会这样。
谁能告诉我这是怎么回事?谢谢!
您正在将密钥写入文件,在这里
fputcsv($df, array_keys(reset($array)));
它将数组的数组键作为 header 放在第一行:
fputcsv($df, array_keys(reset($array)));
表示您有一个二维数组,其中包含基于 0 的键,例如
Array (
0 => Array ("2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS")
1 => Array (...)
2 => Array (...)
3 => Array (...)
4 => Array (...)
5 => Array (...)
6 => Array (...)
7 => Array (...)
8 => Array (...)
9 => Array (...)
)
我正在尝试使用此处描述的以下功能编写 .csv 文件:
Export to CSV via PHP
这是函数:
function array2csv(array &$array)
{
if (count($array) == 0) {
return null;
}
ob_start();
$df = fopen('/path/to/file.csv', 'w');
fputcsv($df, array_keys(reset($array)));
foreach ($array as $row) {
fputcsv($df, $row);
}
fclose($df);
return ob_get_clean();
}
我这样称呼它:
array2csv($array);
其中$array[0]
(所有其他值均遵循此格式)如下:
array(10) {
[1]=>
string(19) "2015-03-01 00:09:01"
[2]=>
string(11) "1234567890"
[3]=>
string(2) "26"
[7]=>
string(7) "0.10102"
[8]=>
string(12) "TESTING THIS"
[9]=>
}
我已经纠结了一段时间,现在想弄清楚为什么我在 .csv 文件中得到如下输出:
0,1,2,3,4,5,6,7,8,9
"2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS"
... etc ...
在做研究时没有真正看到任何其他类似的问题,我自己也不明白为什么会这样。
谁能告诉我这是怎么回事?谢谢!
您正在将密钥写入文件,在这里
fputcsv($df, array_keys(reset($array)));
它将数组的数组键作为 header 放在第一行:
fputcsv($df, array_keys(reset($array)));
表示您有一个二维数组,其中包含基于 0 的键,例如
Array ( 0 => Array ("2015-03-01 00:09:01",1234567890,26,0.10102,"TESTING THIS") 1 => Array (...) 2 => Array (...) 3 => Array (...) 4 => Array (...) 5 => Array (...) 6 => Array (...) 7 => Array (...) 8 => Array (...) 9 => Array (...) )