我有简单的csv文件,它是制表符分隔,我必须使用,因为它来自某个地方,我hvae阅读它并将其插入我的数据库我已经使用一个简单的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]);
}
}
Run Code Online (Sandbox Code Playgroud)
当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 )
Run Code Online (Sandbox Code Playgroud)
这是期望的结果,但是当我使用$ data ['index']访问特定的列值时,例如$ data [8]或$ data [1],它奇怪地给我垃圾值,说一些迭代它给了我正确的权利值但是在10-15行之后它开始给我一些数字和其他列值......我不知道这是什么,至于我知道它应该是格式化问题我试过打开文件在excel和即将到来的罚款....
@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]);
}
}
Run Code Online (Sandbox Code Playgroud)