iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >在 PHP 中将 CSV 文件转换为数组
  • 522
分享到

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

2024-02-27 20:02:16 522人浏览 安东尼
摘要

逗号分隔值 (CSV) 文件是数据管道的重要组成部分。 无论使用何种编程语言,我们的应用程序都可以使用 CSV。 CSV 文件常用于以行和列格式存储数据。 因此,当我们在 PHP 应用程序中处理 C

逗号分隔值 (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
        )

)

--结束END--

本文标题: 在 PHP 中将 CSV 文件转换为数组

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

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

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

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

下载Word文档
猜你喜欢
  • 在 PHP 中将 CSV 文件转换为数组
    逗号分隔值 (CSV) 文件是数据管道的重要组成部分。 无论使用何种编程语言,我们的应用程序都可以使用 CSV。 CSV 文件常用于以行和列格式存储数据。 因此,当我们在 PHP 应用程序中处理 C...
    99+
    2024-02-27
  • 在 PHP 中将数组转换为 CSV 文件
    本篇文章将演示在 PHP 中使用 fputcsv() 函数将数组转换为 CSV 文件。 在 PHP 中使用 fputcsv() 将数组转换为 CSV 文件 fputcsv() 首先将一行格式化为...
    99+
    2024-02-27
  • 将 XML 文件转换为 CSV
    知识点掌握了,还需要不断练习才能熟练运用。下面编程网给大家带来一个Golang开发实战,手把手教大家学习《将 XML 文件转换为 CSV》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,...
    99+
    2024-04-04
  • 怎么在php中将数组转换为json
    怎么在php中将数组转换为json?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php数组转json的函数是json_encode()。json_encode(...
    99+
    2023-06-14
  • 怎么在PHP中将数组数据转换为json
    怎么在PHP中将数组数据转换为json?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Json的具体形式是:对象对象是一个无序的“‘名称/值'对”集合。一...
    99+
    2023-06-14
  • php将数字转换为数组
    我们知道,在编程中,数字和数组是两个不同的概念。数字是表示数值的基本单位,而数组则是存储多个数据项的集合。有时我们需要把数字转换成数组。在PHP中,实现这一过程非常简单。PHP提供了许多内置的函数,可以轻松地将数字转换为数组。以下是一些常用...
    99+
    2023-05-19
  • python-csv如何将text转为csv文件
    python-csv如何将text转为csv文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。import csv def txt...
    99+
    2023-06-04
  • PHP怎么将XML文档转换为数组
    在PHP开发过程中,XML处理是非常常见的操作,而PHP提供了很多关于XML处理的函数和类库。其中,将XML文档转换为PHP数组的功能是一个非常重要的操作,因为它能够方便地将XML数据用于后续的操作和逻辑分析。本文将讨论PHP中用于将XML...
    99+
    2023-05-14
  • 怎么在php中将数组转换为字符串
    怎么在php中将数组转换为字符串?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hy...
    99+
    2023-06-14
  • 如何在PHP中将NumPy数组转换为响应?
    在Python中,NumPy是一个广泛使用的数学库,它提供了丰富的功能和数据结构,包括多维数组、线性代数、傅里叶变换等。然而,当我们需要将NumPy数组传递给PHP后端时,我们需要将它转换为可接受的数据类型。在本文中,我们将介绍如何在PH...
    99+
    2023-11-04
    响应 数组 numy
  • 将Excel文件转为csv文件的pyth
    #!/usr/bin/env python __author__ = "lrtao2010" ''' Excel文件转csv文件脚本 需要将该脚本直接放到要转换的Excel文件同级目录下 支持xlsx 和 xls 格式 在同级目录下生...
    99+
    2023-01-30
    文件 Excel pyth
  • 【Python】python把数据转换为csv文件
    目录 python把数据转换为csv文件 python把数据转换为txt文件 python把数据转换为csv文件 将数据转换为CSV格式文件可以使用Python内置的csv模块进行操作,以下是一段简单的示例代码: import csv...
    99+
    2023-09-01
    python 开发语言 信息可视化
  • 怎么在php中将数组转换为json字符串
    本篇文章给大家分享的是有关怎么在php中将数组转换为json字符串,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。...
    99+
    2023-06-14
  • PHP将字符串转换为数组
    这篇文章将为大家详细讲解有关PHP将字符串转换为数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 字符串转换为数组 在 PHP 中,字符串可以轻松地转换为数组。有多种内置函数和方法可以执行此操作,...
    99+
    2024-04-02
  • 怎么在Golang中将interface{}转换为数组
    怎么在Golang中将interface{}转换为数组?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。golang适合做什么golang可以做服务器端开发,但golang很适合做...
    99+
    2023-06-14
  • 在 Python 中将字符串转换为数组
    使用 str.split() 方法将字符串转换为数组,例如 array = string.split(',')。 str.split() 方法将在每次出现提供的分隔符时将字符串拆分为一个列表。 str...
    99+
    2023-09-04
    python 数据结构 开发语言
  • php如何将数组转换为对象数组
    这篇文章主要介绍了php如何将数组转换为对象数组的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何将数组转换为对象数组文章都会有所收获,下面我们一起来看看吧。方法一:强制类型转换$arr =&n...
    99+
    2023-07-06
  • Java中将数组转换为List
    今天就跟大家聊聊有关Java中将数组转换为List,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一.最常见方式(未必最佳)通过 Arrays.asList(strArray) &nb...
    99+
    2023-06-16
  • PHP中怎么将数组转换为JSON格式
    在PHP中,可以使用json_encode()函数将数组转换为JSON格式。例如: $myArray = array('f...
    99+
    2024-04-02
  • php中怎么将字符串转换为数组
    在PHP中,将字符串转换为数组是一个常见的操作,特别是在解析取自数据库或文件的数据时。下面我们会介绍几种转换字符串为数组的方法,帮助您更好地理解并掌握这项常用技能。1.使用explode函数PHP中有一个内置函数叫explode(),可以用...
    99+
    2023-05-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作