4

我有一个简单的 csv 文件,它是制表符分隔的,我必须按原样使用它,因为它来自某个地方,我可以读取它并将其插入到我的数据库中,我使用了一个简单的 php 代码来读取它

if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){
            /*Skip the first row*/
            fgetcsv($handle, 1000,chr(9));
            while(($data = fgetcsv($handle,1000,chr(9)))!==FALSE){
                    print_r($data[0]);
                        }
}

当 print_r 显示的数据像

Array ( [0] => 01SATAPC [1] => 40ATAPC [2] => [3] => 21P [4] => SERIAL ATA POWER CABLE [5] => 0.00 [6] => 2.00 [7] => 0 [8] => Power Supplies [9] => SERIAL ATA POWER CABLE [10] =>
4 TO 15 PIN 160MM
[11] => [12] => [13] => [14] => MELBHO [15] => 0.000 [16] => [17] => Order to Order [18] => 4 [19] => 2013-01-18 ) 

这是期望的结果,但是当我使用 $data['index'] 例如 $data[8] 或 $data[1] 访问特定列值时,它奇怪地给我垃圾值说对于某些迭代它给了我权利值,但在 10-15 行之后它开始给我一些数字和其他列值.....据我所知,我不知道这是怎么回事它应该是格式问题我试过打开文件在 excel 中,它的未来很好....

4

1 回答 1

7

@ravisoni 您确定 fgetcsv 的第二个参数 1000 比文件中最长的行长吗?尝试将其设置为 0,就像文档中所说的 [php.net/fgetcsv] 一样,看看是否会有所不同。

if(($handle = fopen("var/import/MMT29DEC.csv","r"))!==FALSE){
            /*Skip the first row*/
            fgetcsv($handle, 0,chr(9));
            while(($data = fgetcsv($handle,0,chr(9)))!==FALSE){
                    print_r($data[0]);
                        }
}
于 2012-12-31T13:47:54.140 回答