广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP读取和写入CSV文件的示例代码
  • 195
分享到

PHP读取和写入CSV文件的示例代码

PHP读取CSV文件PHP写入CSV文件PHP CSV文件PHP CSV 2023-05-15 17:05:19 195人浏览 薄情痞子
摘要

目录1. 什么是 CSV 文件2. 从 CSV 文件中读取数据3. 将数据写入 CSV 文件1. 什么是 CSV 文件 CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的

1. 什么是 CSV 文件

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

2. 从 CSV 文件中读取数据

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

在介绍如何使用str_getcsv() 函数之前,我想向你介绍如何输出 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>

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

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

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

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、电子邮件)作为该数组的第一个元素。

我们使用 array_walk() 函数遍历此数组 ,然后提供一个回调函数,它将列标题(全名、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);
}
?>

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

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

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
    );
}

3. 将数据写入 CSV 文件

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

if($_SERVER['REQUEST_METHOD'] == "POST"){
    $file = "./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,我们可以使用 array_values() 函数

if($_SERVER['REQUEST_METHOD'] == "POST"){
    $file = "./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文件的资料请关注编程网其它相关文章!

--结束END--

本文标题: PHP读取和写入CSV文件的示例代码

本文链接: https://www.lsjlt.com/news/209372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP读取和写入CSV文件的示例代码
    目录1. 什么是 CSV 文件2. 从 CSV 文件中读取数据3. 将数据写入 CSV 文件1. 什么是 CSV 文件 CSV(逗号分隔值)文件是使用逗号分隔信息的文本文件。该文件的...
    99+
    2023-05-15
    PHP读取CSV文件 PHP写入CSV文件 PHP CSV文件 PHP CSV
  • PHP读取和写入CSV文件的代码写
    这篇文章主要介绍“PHP读取和写入CSV文件的代码写”,在日常操作中,相信很多人在PHP读取和写入CSV文件的代码写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP读取和写入CSV文件的代码写”的疑惑有所...
    99+
    2023-07-06
  • Python——csv文件的写入与读取
    1.csv文件介绍 CSV文件是一种常见的数据格式,它以逗号分隔不同的字段,每行表示一个数据记录。在Python中,我们可以使用csv模块来读取和写入CSV文件。 2.写入CSV文件 在Python中,我们可以使用csv模块的writer对...
    99+
    2023-09-04
    python 开发语言
  • C#读取写入文件的3种方式示例代码
    目录1:二进制读写2:泛型读写:3:XML读写:不是很稳定最终效果:总结最新对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试。 1:二进制读写 /...
    99+
    2022-11-13
  • python中如何读取和写入CSV文件
    本文小编为大家详细介绍“python中如何读取和写入CSV文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“python中如何读取和写入CSV文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。CSV(Comma...
    99+
    2023-07-04
  • 在python中读取和写入CSV文件详情
    目录前言1.导入CSV库2.对CSV文件进行读写2.1 用列表形式写入CSV文件2.2 用列表形式读取CSV文件2.3 用字典形式写入csv文件2.4 用字典形式读取csv文件结语前...
    99+
    2022-11-11
  • 如何在python中读取和写入CSV文件
    这篇文章主要介绍“如何在python中读取和写入CSV文件”,在日常操作中,相信很多人在如何在python中读取和写入CSV文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在python中读取和写入CS...
    99+
    2023-07-02
  • Python怎么读取和写入操作CSV文件
    这篇文章主要介绍“Python怎么读取和写入操作CSV文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么读取和写入操作CSV文件”文章能帮助大家解决问题。什么是 CSV 文件?CSV...
    99+
    2023-06-29
  • 在python中怎么读取和写入CSV文件
    本篇内容介绍了“在python中怎么读取和写入CSV文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言CSV(Comma-Separat...
    99+
    2023-07-02
  • Python 文本文件与csv文件的读取与写入
    目录一、文本文件读取与写入1 读取文件的 read() 方法2 读取文件的 readline() 方法3 读取文件的 readlines() 方法4 写入文件的 write() 方法...
    99+
    2022-11-13
  • Python文件的读写和异常代码示例
    一、从文件中读取数据 #!/usr/bin/env python with open('pi') as file_object: contents = file_object.read() pr...
    99+
    2022-06-04
    示例 异常 代码
  • C#实现CSV文件读写的示例详解
    目录CSV文件标准文件示例RFC 4180简化标准读写CSV文件使用CsvHelper使用自定义方法总结项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件的解析。本文会介...
    99+
    2023-05-19
    C#读写CSV文件方法 C#读写CSV文件 C#读写CSV C# CSV
  • 详解Python读取和写入操作CSV文件的方法
    目录什么是 CSV 文件?内置 CSV 库解析 CSV 文件读取 CSV 文件csv将 CSV 文件读入字典csv可选的 Python CSV reader参数使用 csv 写入文件...
    99+
    2022-11-13
  • 一起聊聊在python中读取和写入CSV文件
    本篇文章给大家带来了关于Python 的相关知识,其中主要介绍了读取和写入CSV文件的相关内容,包括了导入CSV库、对CSV文件进行读写等等内容,下面一起来看一下,希望对大家有帮助。【相关推荐:Python3视频教程 】CSV(Comma-...
    99+
    2023-05-14
    python
  • 【python基础教程】csv文件的写入与读取
    ✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:python基础教程 💬...
    99+
    2023-09-28
    python pycharm
  • python中numpy数组的csv文件写入与读取
    目录0.摘要1.文件写入与读取2.函数详解-savetxt3.函数详解-loadtxt0.摘要 本文主要介绍numpy库中,csv文件中数据的写入和读取方式。 1.文件写入与读取 写...
    99+
    2023-03-09
    numpy csv写入与读取 numpy csv写入 numpy csv读取
  • Java代码读取properties配置文件的示例代码
    目录读取properties配置文件新手引导PropertiesConcurrentHashMapstaticInputStreamtry...cache...finallyIOEx...
    99+
    2023-05-18
    Java读取properties文件 Java读取properties
  • 【PHP】文件写入和读取详解
    一.实现文件读取和写入的基本思路: 1.通过fopen方法打开文件:$fp =fopen(),fp为Resource类型 2.进行文件读取或者文件写入操作(这里使用的函数以1中返回的$fp作为参数)   调用fclose($fp)关闭关闭...
    99+
    2023-09-02
    php 数学建模 开发语言
  • 一文搞懂怎么在python中读取和写入CSV文件
    本篇文章给大家带来了关于Python的相关知识,其中主要整理了读取和写入CSV文件的相关问题,CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型,下面一起来看一下...
    99+
    2022-07-15
    python
  • 聊聊Python对CSV文件的读取与写入问题
    今天天气"刚刚好"(薛之谦么么哒),无聊的我翻到了一篇关于csv文件读取与写入的帖子,作为测试小白的我一直对python情有独钟,顿时心血来潮,决定小搞他一下,分享给那些需要的小白,...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作