将 php 中的嵌套关​​联数组转换为 CSV 文件

Turning a nested associative array in php into a CSV file

我正在处理 PHP 问题,并且有一个如下所示的关联数组:

(
  [2019-03-22T2:26:03-04:00] => Array
      (
          [0] => Array
              (
                  [A] => 1
                  [B] => 1
                  [C] => 2
              )

      )

  [2019-03-23T2:27:04-04:00] => Array
      (
          [0] => Array
              (
                  [A] => 1
              )

      )
)

我正在尝试将此数据转换为如下所示的 CSV:

NAME                              COUNT
2021-07-15T10:46:16-04:00
      A                             1
      B                             1
      C                             2
2021-07-15T10:46:17-04:00
      A                             1

我以前做过这个,从数组到 csv,有一个简单的关联数组,但以上面的格式获取它对我来说不起作用。这是我试过的代码:

变量 $statArray 包含我需要在 CSV 上的数组。

  $fp = fopen('test.csv', 'w');
  foreach ($statArray as $fields)
  {
    foreach ($key as $v)
    {
        fputcsv($fp, $v);
    }
  }

感谢您的帮助。

这是一种奇怪的格式,但您需要编写主数组键,然后获取嵌套的键和值并写入它们:

foreach ($statArray as $date => $array)
{
    fputcsv($fp, [$date]);  //write main key
    
    foreach ($array as $values)
    {
        foreach ($values as $name => $count)
        {
            fputcsv($fp, [$name, $count]); //write key and value
        }
    }
}

这可能更有意义:

2021-07-15T10:46:16-04:00    A    1
2021-07-15T10:46:16-04:00    B    1
2021-07-15T10:46:16-04:00    C    2
2021-07-15T10:46:17-04:00    A    1

如果是,那么:

foreach ($statArray as $date => $array)
{        
    foreach ($array as $values)
    {        
        foreach ($values as $name => $count)
        {
            fputcsv($fp, [$date, $name, $count]); //write date and key and value
        }
    }
}

无论哪种方式,您都声明了 CSV,但看起来您显示的是制表符而不是逗号。如果是这样,您需要:

fputcsv($fp, [$date, $name, $count], "\t");