我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在 PHP 中将 CSV 文件转换为数组

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在 PHP 中将 CSV 文件转换为数组

逗号分隔值 (CSV) 文件是数据管道的重要组成部分。 无论使用何种编程语言,我们的应用程序都可以使用 CSV。

CSV 文件常用于以行和列格式存储数据。 因此,当我们在 PHP 应用程序中处理 CSV 文件时,数组是保存其值的完美数据结构。

在本文中,我们将详细介绍并向您展示可让我们在 PHP 中读取 CSV 并将其转换为数组的内置 PHP 函数。


在 PHP 中使用 fopen() 和 fgetcsv() 将 CSV 转换为数组

对于本节和其他两节,我们将使用包含 51 行和 4 列的保存状态住房值的 CSV 文件 (state_housing_values.csv) 来展示这些函数的工作原理。

首先,我们需要 fopen() 函数来打开 CSV 文件并将其指向 fgetcsv() 函数作为第一个参数,其余参数可选。 其他参数包括长度、分隔符、外壳和转义符。

现在,让我们将 CSV 文件转换为数组。


$file = fopen('state_housing_values.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
    var_dump($line);
}
fclose($file);

输出结果如下:


array(4) {
  [0]=>
  string(5) "State"
  [1]=>
  string(5) "Price"
  [2]=>
  string(13) "1-year change"
  [3]=>
  string(15) "1-year forecast"
}
array(4) {
  [0]=>
  string(7) "Alabama"
  [1]=>
  string(7) "143,072"
  [2]=>
  string(3) "5.5"
  [3]=>
  string(4) "-1.1"
}
array(4) {
  [0]=>
  string(6) "Alaska"
  [1]=>
  string(7) "300,073"
  [2]=>
  string(4) "-2.3"
  [3]=>
  string(4) "-4.8"
}
array(4) {
  [0]=>
  string(7) "Arizona"
  [1]=>
  string(7) "277,574"
  [2]=>
  string(3) "7.5"
  [3]=>
  string(4) "-0.5"
}
array(4) {
  [0]=>
  string(8) "Arkansas"
  [1]=>
  string(7) "130,907"
  [2]=>
  string(3) "3.8"
  [3]=>
  string(4) "-1.7"
}
array(4) {
  [0]=>
  string(10) "California"
  [1]=>
  string(7) "578,267"
  [2]=>
  string(3) "4.4"
  [3]=>
  string(4) "-1.1"
}
...

在我们继续之前,我们可以删除标头,这在我们的 PHP 代码库中可能不需要。 为此,我们可以在 while 循环之前添加 $line = fgetcsv($file)


$file = fopen('state_housing_values.csv', 'r');
$line = fgetcsv($file);
while (($line = fgetcsv($file)) !== FALSE) {
    var_dump($line);
}
fclose($file);

输出结果如下:


array(4) {
  [0]=>
  string(7) "Alabama"
  [1]=>
  string(7) "143,072"
  [2]=>
  string(3) "5.5"
  [3]=>
  string(4) "-1.1"
}
array(4) {
  [0]=>
  string(6) "Alaska"
  [1]=>
  string(7) "300,073"
  [2]=>
  string(4) "-2.3"
  [3]=>
  string(4) "-4.8"
}
...

有了这个,标题不再在数组中,

上面的数组格式很难使用。 为了使数组更可行,我们需要重构代码并使用 array_combine()。


<?php

$filename = 'state_housing_values.csv';
$delimiter = ',';

if (file_exists($filename) || is_readable($filename)) {
    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE) {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
            if (!$header)
                $header = $row;
            else
                $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    var_dump($data);
} else {
    error_log("Error reading file.");
}
?>

输出结果如下:


array(50) {
  [0]=>
  array(4) {
    ["State"]=>
    string(7) "Alabama"
    ["Price"]=>
    string(7) "143,072"
    ["1-year change"]=>
    string(3) "5.5"
    ["1-year forecast"]=>
    string(4) "-1.1"
  }
  [1]=>
  array(4) {
    ["State"]=>
    string(6) "Alaska"
    ["Price"]=>
    string(7) "300,073"
    ["1-year change"]=>
    string(4) "-2.3"
    ["1-year forecast"]=>
    string(4) "-4.8"
  }
...

在某些情况下,分隔符不是逗号 , 。 因此,我们需要指定分隔符。

其他分隔符可以是分号 ;、空格 " " 或制表符 \t。 要在函数内指定分隔符,可以遵循以下代码。


$delimiter = ';'; // semi-colon
fgetcsv($handle, 1000, $delimiter)
Use the str_getcsv() to Convert CSV to Array in PHP
Here, we will make use of the file() function to process the CSV, loop through the file pointer using the foreach loop and place each value within the array $data via the str_getcsv() function.

$data = array();
$lines = file('state_housing_values.csv', FILE_IGNORE_NEW_LINES);

foreach ($lines as $key => $value) {
    $data[$key] = str_getcsv($value);
}

print_r($data);

输出结果如下:


Array
(
    [0] => Array
        (
            [0] => State
            [1] => Price
            [2] => 1-year change
            [3] => 1-year forecast
        )

    [1] => Array
        (
            [0] => Alabama
            [1] => 143,072
            [2] => 5.5
            [3] => -1.1
        )

    [2] => Array
        (
            [0] => Alaska
            [1] => 300,073
            [2] => -2.3
            [3] => -4.8
        )

    [3] => Array
        (
            [0] => Arizona
            [1] => 277,574
            [2] => 7.5
            [3] => -0.5
        )

    [4] => Array
        (
            [0] => Arkansas
            [1] => 130,907
            [2] => 3.8
            [3] => -1.7
        )

    [5] => Array
        (
            [0] => California
            [1] => 578,267
            [2] => 4.4
            [3] => -1.1
        )

    [6] => Array
        (
            [0] => Colorado
            [1] => 408,794
            [2] => 3.1
            [3] => -1.7
        )

    [7] => Array
        (
            [0] => Connecticut
            [1] => 259,855
            [2] => 1.4
            [3] => -2.3
        )

    [8] => Array
        (
            [0] => Delaware
            [1] => 257,521
            [2] => 0
            [3] => -2.9
        )

    [9] => Array
        (
            [0] => Florida
            [1] => 252,309
            [2] => 3.6
            [3] => -1.5
        )

    [10] => Array
        (
            [0] => Georgia
            [1] => 206,804
            [2] => 4.9
            [3] => -1.5
        )
...

对上面的代码添加一些更改以删除标头。 我们将使用 if 条件语句删除包含标题的第一个数组。


foreach ($lines as $key => $value) {
    if (!$key == 0) {
        $data[$key] = str_getcsv($value);
    }
}

print_r($data);

输出结果如下:


Array
(
    [1] => Array
        (
            [0] => Alabama
            [1] => 143,072
            [2] => 5.5
            [3] => -1.1
        )
...

在 PHP 中使用 array_map() 将 CSV 转换为数组

上面的代码片段使用循环或预处理将 CSV 转换为数组。 但是,有一种更好、更快且易于阅读的方法,可以使用 array_map()file() 函数将 CSV 文件转换为 PHP 中的数组。


$csv = array_map('str_getcsv', file('state_housing_values.csv'));
print_r($csv);

输出结果如下:


Array
(
    [0] => Array
        (
            [0] => State
            [1] => Price
            [2] => 1-year change
            [3] => 1-year forecast
        )

...

    [50] => Array
            (
                [0] => Wyoming
                [1] => 256,089
                [2] => 5.7
                [3] => -1.6
            )

)

这些函数可以处理具有大量值的 CSV 文件,为了展示这一点,我们将在 CSV 文件上使用 array_map() 函数来保存 1857 行和 17 列的杠杆数据,并且删除数组的标题。


$csv = array_map('str_getcsv', file('leverage.csv'));
unset($csv[0]);
print_r($csv);

代码的输出(在 0.257 秒时退出)如下所示。


Array
(
    [1] => Array
        (
            [0] => 001300
            [1] => 20150331
            [2] => 2015
            [3] => 1
            [4] => INDL
            [5] => C
            [6] => D
            [7] => STD
            [8] => USD
            [9] => 2015Q1
            [10] => 2015Q1
            [11] => 45357.0000
            [12] => 781.7070
            [13] => 5661.0000
            [14] => 15432.0000
            [15] => A
            [16] => 104.3100
        )

...
    [1856] => Array
        (
            [0] => 252940
            [1] => 20171231
            [2] => 2017
            [3] => 3
            [4] => INDL
            [5] => C
            [6] => D
            [7] => STD
            [8] => USD
            [9] => 2017Q4
            [10] => 2017Q3
            [11] =>
            [12] =>
            [13] =>
            [14] =>
            [15] => A
            [16] => 7.2700
        )

)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在 PHP 中将 CSV 文件转换为数组

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

下载Word文档

猜你喜欢

在 PHP 中将 CSV 文件转换为数组

逗号分隔值 (CSV) 文件是数据管道的重要组成部分。 无论使用何种编程语言,我们的应用程序都可以使用 CSV。CSV 文件常用于以行和列格式存储数据。 因此,当我们在 PHP 应用程序中处理 CSV 文件时,数组是保存其值的完美数据结构。
在 PHP 中将 CSV 文件转换为数组
2024-02-27

在 PHP 中将数组转换为 CSV 文件

本篇文章将演示在 PHP 中使用 fputcsv() 函数将数组转换为 CSV 文件。在 PHP 中使用 fputcsv() 将数组转换为 CSV 文件fputcsv() 首先将一行格式化为逗号分隔值,然后将其写入 CSV 文件。它需要几个
在 PHP 中将数组转换为 CSV 文件
2024-02-27

将 XML 文件转换为 CSV

知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个Golang开发实战,手把手教大家学习《将 XML 文件转换为 CSV》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!问题内容我
将 XML 文件转换为 CSV
2024-04-04

怎么在php中将数组转换为json

怎么在php中将数组转换为json?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php数组转json的函数是json_encode()。json_encode(
2023-06-14

怎么在PHP中将数组数据转换为json

怎么在PHP中将数组数据转换为json?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Json的具体形式是:1.对象对象是一个无序的“‘名称/值对”集合。一个对象
2023-06-14

php怎么把csv文件内容转为数组

php把csv文件内容转为数组的方法:1、新建一个PHP文件;2、新建一个EXCEL文档并保存为CSV文件;3、把csv文件路径存放在变量中;4、使用while循环将csv文件内容转为数组即可。
2020-07-28

怎么在php中将数组转换为字符串

怎么在php中将数组转换为字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hy
2023-06-14

怎么在php中将数组转换为json字符串

本篇文章给大家分享的是有关怎么在php中将数组转换为json字符串,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。
2023-06-14

怎么在Golang中将interface{}转换为数组

怎么在Golang中将interface{}转换为数组?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。golang适合做什么golang可以做服务器端开发,但golang很适合做
2023-06-14

Java中将数组转换为List

今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) 方式
2023-06-16

php如何将数组转换为对象数组

这篇文章主要介绍了php如何将数组转换为对象数组的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何将数组转换为对象数组文章都会有所收获,下面我们一起来看看吧。方法一:强制类型转换$arr = array(
2023-07-06

php中怎么怎么将数组转换为xml

这篇文章给大家介绍php中怎么怎么将数组转换为xml,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。php将数组转为xml的方法:首先创建一个PHP示例文件;然后通过“function data_to_xml($data
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录