在 php 中尝试将此数组导出为 CSV 文件时,我得到一个空的 sheet
When trying to export this array as a CSV file in php I get an empty sheet
我有这个数组,我想把它转换成一个 CSV 文件,问题是这个数组没有正确生成一个 csv,而只是空字段,为什么?
这是我的数组内容(我在这里打印的数组是$listaParaCSV
,如下代码所示):
array(2) {
[0]=>
array(22) {
[0]=> string(6) "nombre"
[1]=> string(14) "Lun 11-01-2021"
[2]=> string(14) "Mie 13-01-2021"
[3]=> string(14) "Lun 18-01-2021"
[4]=> string(14) "Mie 20-01-2021"
[5]=> string(14) "Lun 25-01-2021"
}
[1]=>
array(85) {
["Pedro"]=>
array(21) {
["Lun 11-01-2021"]=> string(2) "SI"
["Mie 13-01-2021"]=> string(2) "SI"
["Lun 18-01-2021"]=> string(2) "SI"
["Mie 20-01-2021"]=> string(0) ""
["Lun 25-01-2021"]=> string(0) ""
}
["Maria"]=>
array(21) {
["Lun 11-01-2021"]=> string(2) "SI"
["Mie 13-01-2021"]=> string(2) "SI"
["Lun 18-01-2021"]=> string(0) ""
["Mie 20-01-2021"]=> string(0) ""
["Lun 25-01-2021"]=> string(0) ""
}
}
}
这是我的代码(变量 $listaFechas
和 $paraCSV
本身就是数组):
$listaParaCSV = array (
$listaFechas,
$paraCSV
);
$fp = fopen('backupAsistenciaCurso-'.$cursoID.'.csv', 'w');
foreach ($listaParaCSV as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
预期结果是一个 CSV 文件,当使用 open with OpenCalc 或 excel 打开时显示如下内容:
问题是您在 $listaParaCSV
上循环有 2 个元素,headers,然后是一个元素中的所有数据。
相反,如果您写出 headers 然后循环遍历 $paraCSV
,在输出它们之前添加键(名称)作为第一个字段...
$fp = fopen('backupAsistenciaCurso-'.$cursoID.'.csv', 'w');
fputcsv($fp, $listaFechas);
foreach ($paraCSV as $key => $fields) {
array_unshift($fields, $key);
fputcsv($fp, $fields);
}
我有这个数组,我想把它转换成一个 CSV 文件,问题是这个数组没有正确生成一个 csv,而只是空字段,为什么?
这是我的数组内容(我在这里打印的数组是$listaParaCSV
,如下代码所示):
array(2) {
[0]=>
array(22) {
[0]=> string(6) "nombre"
[1]=> string(14) "Lun 11-01-2021"
[2]=> string(14) "Mie 13-01-2021"
[3]=> string(14) "Lun 18-01-2021"
[4]=> string(14) "Mie 20-01-2021"
[5]=> string(14) "Lun 25-01-2021"
}
[1]=>
array(85) {
["Pedro"]=>
array(21) {
["Lun 11-01-2021"]=> string(2) "SI"
["Mie 13-01-2021"]=> string(2) "SI"
["Lun 18-01-2021"]=> string(2) "SI"
["Mie 20-01-2021"]=> string(0) ""
["Lun 25-01-2021"]=> string(0) ""
}
["Maria"]=>
array(21) {
["Lun 11-01-2021"]=> string(2) "SI"
["Mie 13-01-2021"]=> string(2) "SI"
["Lun 18-01-2021"]=> string(0) ""
["Mie 20-01-2021"]=> string(0) ""
["Lun 25-01-2021"]=> string(0) ""
}
}
}
这是我的代码(变量 $listaFechas
和 $paraCSV
本身就是数组):
$listaParaCSV = array (
$listaFechas,
$paraCSV
);
$fp = fopen('backupAsistenciaCurso-'.$cursoID.'.csv', 'w');
foreach ($listaParaCSV as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
预期结果是一个 CSV 文件,当使用 open with OpenCalc 或 excel 打开时显示如下内容:
问题是您在 $listaParaCSV
上循环有 2 个元素,headers,然后是一个元素中的所有数据。
相反,如果您写出 headers 然后循环遍历 $paraCSV
,在输出它们之前添加键(名称)作为第一个字段...
$fp = fopen('backupAsistenciaCurso-'.$cursoID.'.csv', 'w');
fputcsv($fp, $listaFechas);
foreach ($paraCSV as $key => $fields) {
array_unshift($fields, $key);
fputcsv($fp, $fields);
}