PHP - 将2d数组写入CSV文件,但神秘地得到" 0,1,2,3,4,5,6,7,8,9"作为第一排?

时间:2015-08-25 19:16:28

标签: php csv fputcsv

我正在尝试使用此处描述的以下函数编写.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 ...

在做研究时还没有真正看到过这样的问题,我不明白为什么会这样。

有人能告诉我这里发生了什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您正在写文件的密钥,此处

fputcsv($df, array_keys(reset($array)));

答案 1 :(得分:2)

它将数组的数组键作为标题放在第一行:

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 (...)
)