我想将数组转换为csv,我能够将关联数组转换为csv.
但无法获得标题.
我希望动态地将NUMBER TYPE DATE作为标题
下面是我收敛的数组.
Array ( [0] => Array ( [NUMBER] => 67 [TYPE] => Other [DATE] => 3/31/2011 ) [1] => Array ( [NUMBER] => 87 [TYPE] => something [DATE] => 3/28/2011 ) [2] => Array ( [NUMBER] => 67 [TYPE] => Other [DATE] => 3/2/2011 ) )
<? $fp1 = fopen('file.csv','w'); foreach ($arr2 as $fields) { fputcsv($fp1,$fields); } fclose($fp1); ?>
只需使用
array_keys
获取密钥并首先将其写入文件.
fputcsv($han,array_keys($arr[0])); foreach ($arr as $a) { ... }
这假设你有一个数字数组(并假设它不是空的).如果无法保证设置arr [0],则可以使用array_shift
或array_slice
提取第一个元素. (或者你可以在你的循环中有一个标志,无论标题是否已经写入 – 只是将它默认为false.如果不是,则将其设置为true并打印标题.)
当我在它时,你可以使用array_combine
朝相反的方向(CSV到关联数组的数组).
$data = array(); $header = fgetcsv($han); while (($row = fgetcsv($han)) !== false) { $data[] = array_combine($header,$row); }
(请注意,这假设您没有空白行 – 空行将返回array(),这将使用combine发出警告并将无意义放入数据中.)