带有列标题的php数组到csv的转换

2024-06-21

我想将数组转换为 csv,我能够将关联数组转换为 csv。

但无法获取标题。

我想要动态地将数字类型日期作为标题

下面是我转换的数组。

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 http://php.net/array_keys获取密钥并将其写入文件。

fputcsv($han, array_keys($arr[0]));
foreach ($arr as $a) { ... }

这假设您有一个数字数组(并且假设它不为空)。如果arr[0]不保证被设置,您可以使用array_shift http://php.net/array_shift or array_slice http://php.net/array_slice提取第一个元素。 (或者,您可以在循环中设置一个标志,指示标头是否已写入 - 只需将其默认为 false。如果不是 true,请将其设置为 true 并打印标头。)


当我这样做的时候,你可以使用array_combine http://php.net/array_combine走向相反的方向(CSV 到关联数组的数组)。

$data = array();
$header = fgetcsv($han);
while (($row = fgetcsv($han)) !== false) {
    $data[] = array_combine($header, $row);
}

(请注意,这假设您没有空白行 - 将返回空白行array()这将向联合收割机发出警告,并将无意义的内容放入data.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有列标题的php数组到csv的转换 的相关文章

随机推荐