使用php将csv文件保存在本地机器上

Posted

技术标签:

【中文标题】使用php将csv文件保存在本地机器上【英文标题】:save csv file on local machine using php 【发布时间】:2015-06-09 07:15:03 【问题描述】:

我有数组并使用它制作 CSV,但它没有在本地保存。

我应该在这里改变什么?

这是一个带有代码的数组。哪个不能在本地系统上创建 CSV

$example_data = array(
  array('ID' => 1,'booktitle' => 'Quarter Share', 'author' => 'Nathan Lowell',
        'isbn' => '978-0982514542'),
  array('ID' => 2, 'booktitle' => '7th Son: Descent','author' => 'J. C. Hutchins',
        'isbn' => '0312384378'),
  array('ID' => 3, 'booktitle' => 'Shadowmagic', 'author' => 'John Lenahan',
        'isbn' => '978-1905548927'),
  array('ID' => 4, 'booktitle' => 'The Crown Conspiracy', 'author' => 'Michael J. Sullivan',
        'isbn' => '978-0979621130'),
  array('ID' => 5, 'booktitle' => 'Max Quick: The Pocket and the Pendant', 'author' => 'Mark Jeffrey',
        'isbn' => '978-0061988929'),
  array('ID' => 6, 'booktitle' => 'Jack Wakes Up: A Novel', 'author' => 'Seth Harwood',
        'isbn' => '978-0307454355')
);

function outputCsv($fileName, $assocDataArray)

    if(isset($assocDataArray['0']))
        $fp = fopen('file.csv', 'w');
        fputcsv($fp, array_keys($assocDataArray['0']));
        foreach($assocDataArray AS $values)
            fputcsv($fp, $values);
            $data[]=$values;
        

        $csv_handler = fopen ('file.csv','w');
        fwrite ($csv_handler,$data);
        fclose ($csv_handler);

        echo 'Data saved to csvfile.csv';

    

【问题讨论】:

本地不保存是什么意思?你的意思是本地到你的机器还是本地到你的服务器? php 运行服务器端,因此 file.csv 应该存在于您的服务器上,与包含上述代码的 .php 文件位于同一目录中。 本地在我的电脑上的 locahost PHP 运行服务器端,但您可以创建指向 CSV 文件的 html 链接然后下载它? ***.com/questions/2793751/… 【参考方案1】:

我只改变了你的一些功能并且正在为我工​​作:

function outputCsv($fileName, $assocDataArray)

    if(isset($assocDataArray['0']))
        $fp = fopen($fileName, 'w');
        fputcsv($fp, array_keys($assocDataArray['0']));
        foreach($assocDataArray AS $values)
            fputcsv($fp, $values);
            $data[]=$values;
        
/*
        $csv_handler = fopen ('file.csv','w');
        fwrite ($csv_handler,$data);
        fclose ($csv_handler);
*/
        fclose($fp); 
        echo 'Data saved to csvfile.csv';

    


outputCsv('test.csv', $example_data);

您试图通过 fwrite() 函数写入数组类型的数据,它只需要字符串。这就是它产生错误的原因。

【讨论】:

【参考方案2】:

fwrite() 函数不会将数组直接写入文件,首先你必须这样做(我编辑了你的函数)

function outputCsv($fileName, $assocDataArray)

    if(isset($assocDataArray['0']))
        $data = array();
        $fp = fopen('file.csv', 'w');
        fputcsv($fp, array_keys($assocDataArray['0']));
        foreach($assocDataArray AS $values)
            fputcsv($fp, $values);
            $data[]=$values;
        

        $csv_handler = fopen ('file.csv','w');
        fwrite ($csv_handler, print_r($data, true));
        fclose ($csv_handler);

        echo 'Data saved to csvfile.csv';

    

【讨论】:

以上是关于使用php将csv文件保存在本地机器上的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pyspark 数据框中更快地保存 csv 文件?

如何将本地 csv 文件的内容保存到“硬编码”Pandas DataFrame 中?

将 NSLog 保存到本地文件中

无法将数据框保存到本地 Mac 机器

JavaScript - 将图像从 URL 保存到本地机器特定路径?

如何使用 PHP 在 MySQL 数据库中将纯文本 CSV 字段保存为 HTML?