PHP csv报告添加列名称

时间:2016-04-06 11:25:39

标签: php

我想将数据保存到csv文件。

我已经可以这样做但我也希望添加类似的列名,以便报告更具可读性,但这是我在努力的地方:

到目前为止我的代码:

<?php
namespace Test\UserBundle\ReportsBuilder;

class RegistrationReport {

    public function buildRegReport($data)
    {
        $cavPath = '../src/Test/UserBundle/Resources/reports/test_report_'.date('Y-m-d H:i:s').'.csv';
        $csvh = fopen($cavPath, 'w+');

            $row = 'rowid'.",".'emailaddress'.",".'firstname'.",".'surname'.",".'contact_number';

        foreach ($data as $value)
        {
            $reportRows = array
            (
                $value['rowid'],
                $value['emailaddress'],
                $value['firstname'],
                $value['surname'],
                $value['contact_number'],
            );
                fputcsv($csvh, $reportRows);
        }
        fclose($csvh);
    }
}

因此传递给方法的$ data param包含数组数组。我正在考虑创建一个带有列名的字符串,然后是一些如何将它添加到循环中,但是我可能错误地提出了如何将colum名称分配给我的报告的任何建议。

此致

4 个答案:

答案 0 :(得分:2)

好吧,我真的不明白为什么你在数组循环中创建一个数组,包括相同的字段..

但是要回答您的问题,将列名放入CSV文件实际上非常简单。您唯一需要做的就是在第一行添加列名(逗号分隔)。这与添加数据行完全相同。

示例:

    fputcsv($csvh, array_keys($data[0]));
    foreach ($data as $value) {
        fputcsv($csvh, $value);
    }

希望这能回答你的问题。

答案 1 :(得分:1)

要在csv中添加标题,您可以使用与添加数据相同的方法。

所以你必须改变这一行

$row = 'rowid'.",".'emailaddress'.",".'firstname'.",".'surname'.",".'contact_number';

要:

fputcsv($csvh, array('rowid', 'emailaddress', 'firstname', 'surname', 'contact_number'));

答案 2 :(得分:0)

尝试:

<?php
namespace Test\UserBundle\ReportsBuilder;

class RegistrationReport {

    public function buildRegReport($data)
    {
        $cavPath = '../src/Test/UserBundle/Resources/reports/test_report_'.date('Y-m-d H:i:s').'.csv';
        $csvh = fopen($cavPath, 'w+');

        $row = array('rowid','emailaddress','firstname','surname','contact_number');
        fputcsv($csvh, $row);

        foreach ($data as $value)
        {
            $reportRows = array
            (
                $value['rowid'],
                $value['emailaddress'],
                $value['firstname'],
                $value['surname'],
                $value['contact_number'],
            );
                fputcsv($csvh, $reportRows);
        }
        fclose($csvh);
    }
}

答案 3 :(得分:0)

您需要在csv文件中添加listen,例如:

fputcsv($csvh, $row); before the foreach()