使用php从csv文件中提取数据 [英] Extracting data from a csv file using php

查看:135
本文介绍了使用php从csv文件中提取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写了这段代码:

$handle = fopen('upload/EFT.csv', "r");  
   while (! feof($handle)) { 
    print_r(fgetcsv($handle));
    }
fclose($handle);

这是文件:

AKRV0002,AKR,V0002,Akron
AKRV0006,AKR,V0006,Akron
AKRV0007,AKR,V0007,Akron
AKRV0011,AKR,V0011,Akron
AKRV0012,AKR,V0012,Akron
ATLV0019,ATL,V0019,ATLANTA
ATLV0021,ATL,V0021,ATLANTA

它返回以下内容:

Array ( [0] => AKRV0002 [1] => AKR [2] => V0002 [3] => Akron AKRV0006 [4] => AKR [5] => V0006 [6] => Akron AKRV0007 [7] => AKR [8] => V0007 [9] => Akron AKRV0011 [10] => AKR [11] => V0011 [12] => Akron AKRV0012 [13] => AKR [14] => V0012 [15] => Akron ATLV0019 [16] => ATL [17] => V0019 [18] => ATLANTA ATLV0021 [19] => ATL [20] => V0021 [21] => ATLANTA

如何让它返回新数组中的每一行?

How can I have this return each line in a new array?

推荐答案

查看数组位置3如何为"Akron AKRV0006"—这是第1行的最后一个值和第2行的第一个值.似乎换行符未正确读取.没有原始文件,我无法告诉原因.

See how array position 3 is "Akron AKRV0006" — that is the last value of line 1 and the first value of line 2. It appears that the newlines aren't being read correctly. Without your raw file, I can't tell why.

修复该问题后,您会看到 fgetcsv 一次只能读取一行(换句话说, ,则返回一个数组,其中的数据仅来自一行),而不是一次显示所有行.因此,您将需要循环并将每个数组添加到另一个数组,直到fgetcsv不返回更多数据为止:

Once you have fixed that, you will see that fgetcsv reads only one line at a time (in other words, returns an array with the data from only one row), not all lines at once. So, you will need to loop and add each array to another array until fgetcsv returns no more data:

$data = array();
while ($row = fgetcsv($handle)) {
    $data[] = $row;
}

这篇关于使用php从csv文件中提取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆