在 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);
}