Content

PHP读取和写入CSV文件的示例代码(php如何读取文件内容数据)一看就会

文章摘要

这篇文章介绍了如何使用PHP语言处理CSV(逗号分隔值)文件。首先,文章详细讲解了如何从CSV文件中读取数据。通过使用`file()`函数和`str_getcsv()`函数,将文件内容解析为数组形式。接着,文章描述了如何将处理后的数据写入CSV文件中,使用`fputcsv()`函数将数据写入指定模式。文章还提到了如何处理数据中的列标题,并展示了完整的读取和写入过程。此外,文章还提供了相关的代码示例,帮助读者更好地理解和实现CSV文件的操作。需要注意的是,文章强调了在写入数据时要去掉键值,以确保数据格式的正确性。


目录1. 什么是 CSV 文件2. 从 CSV 文件中读取数据3. 将数据写入 CSV 文件

CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的每一行都是一条数据记录,也就意味着它可以用于以表格的形式展现信息。

我将使用内置函数 从 CSV 文件中读取数据,然后使用 解析包含逗号的字符串。

在介绍如何使用 函数之前,我想向你介绍如何输出 CSV 文件中的数据。

<?php if($_FILES){ var_dump(file($_FILES[‘file’][‘tmp_name’], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); } ?> ? <html> <body> <form method=”post” enctype=”multipart/form-data”> <input type=”file” name=”file” /> <button>upload</button> </form> </body> </html>

当我使用上面的代码上传文件时,输出以下数据:

如图所示,每个字符串中都有逗号,每个逗号将一条信息与另一条信息隔开。

使用 函数,并且 作为回调函数,该回调将解析每个具有逗号的字符串并将它们分隔在一个数组中。

if($_FILES){ //loop through the csv file into an array $theCSV=array_map(‘str_getcsv’, file($_FILES[‘file’][‘tmp_name’], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); //dump result var_dump($theCSV); }

输出如下:

输出的数据看起来比之前要好得多,我们将列标题(全名、QQ、电子邮件)作为该数组的第一个元素。

我们使用 函数遍历此数组 ,然后提供一个回调函数,它将列标题(全名、QQ、电子邮件)和每个 CSV 数据组合为一个新数组。

if($_FILES){ //loop through the csv file into an array $theCSV=array_map(‘str_getcsv’, file($_FILES[‘file’][‘tmp_name’], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); array_walk($theCSV, function(&$ary) use($theCSV) { $ary=array_combine($theCSV[0], $ary); }); //dump result var_dump($theCSV); } ?>

注意,在上面的回调函数中,我使用了变量 运算符将 通过引用传递给函数,这使的我们可以修改原始数组。当我们运行上面的代码时,这就是我们的 CSV 数组现在的样子:

注意这里有个问题:这个新数组的第一个元素是表头,因为我们之前让它与 CSV 数组的其他数组组装在了一起。可以使用 来解决这个问题。

if($_FILES){ //loop through the csv file into an array $theCSV=array_map(‘str_getcsv’, file($_FILES[‘file’][‘tmp_name’], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); array_walk($theCSV, function(&$ary) use($theCSV) { $ary=array_combine($theCSV[0], $ary); }); //remove column headers which is the first element array_shift($theCSV); //dump result var_dump($theCSV); }

这就是我们最终的 CSV 数组的样子

将上面的代码封装成一个函数,如下:

function readCSV($file){ if(empty($file) || !file_exists($file)) return; //store the column headers $headers=null; $theCSV=array_map(‘str_getcsv’, file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); array_walk($theCSV, function(&$ary) use($theCSV, &$headers) { $ary=array_combine($theCSV[0], $ary); //store the headers $headers=$theCSV[0]; }); //remove column headers which is the first element of our csv array array_shift($theCSV); //return data return array( “headers”=> $headers, “data”=> $theCSV ); }

将数据写入 CSV 文件,其逻辑是使用 函数以附加模式打开 CSV 文件, 然后用 解析我们要写入 CSV 文件的数据,然后此方法将这些数据写入文件流当中。

if($_SERVER[‘REQUEST_METHOD’]==”POST”){ $file=”https://www.jb51.net/article/my_csv_file.csv”; //loop through the csv file into an array $csvData=readCSV($file); //create array to store the new data $newData=[]; //loop through headers and then add values as a new array foreach($csvData[‘headers’] as $index=> $key){ if($key==’Full Name’){ $newData[$key]=$_POST[‘full_name’]; }elseif($key==’Email’){ $newData[$key]=$_POST[’email’]; }elseif($key==’Phone’){ $newData[$key]=$_POST[‘phone’]; }else{ $newData[$key]=”; } } var_dump($newData); }

如图所示就是我们将写入到 CSV 文件的数组的数据

在我们将这些数据写入到 CSV 文件之前,我们必须去掉 key,我们可以使用 函数

if($_SERVER[‘REQUEST_METHOD’]==”POST”){ $file=”https://www.jb51.net/article/my_csv_file.csv”; //loop through the csv file into an array $csvData=readCSV($file); //create array to store the new data $newData=[]; //loop through headers and then add values as a new array foreach($csvData[‘headers’] as $index=> $key){ if($key==’Full Name’){ $newData[$key]=$_POST[‘full_name’]; }elseif($key==’Email’){ $newData[$key]=$_POST[’email’]; }elseif($key==’Phone’){ $newData[$key]=$_POST[‘phone’]; }else{ $newData[$key]=”; } } //open the csv file as in append mode $fp=fopen($file, ‘a+’); //remove keys from new data $newData=array_values($newData); //append data to csv file fputcsv($f, $newData); //close the resource fclose($fp); }

不出意外的话,数据就会成功写入到 CSV 文件当中去了。

以上就是PHP读取和写入CSV文件的示例代码的详细内容,更多关于PHP CSV文件的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:php实现CSV文件导入和导出利用PHP生成CSV文件简单示例php实现的读取CSV文件函数示例详解php几行代码实现CSV格式文件输出PHP读取CSV大文件导入数据库的实例