使用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文件保存在本地机器上的主要内容,如果未能解决你的问题,请参考以下文章
如何将本地 csv 文件的内容保存到“硬编码”Pandas DataFrame 中?