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行後に、いくつかの数値と他の列の値が表示され始めます.....フォーマットの問題であることがわかっている限り、これで何が起こっているのかわかりません。ファイルを開いてみましたエクセルで、そしてその到来はうまくいく…。

4

1 に答える 1

7

@ravisoni 1000のfgetcsvの2番目のパラメーターが、ファイルの最長行よりも長いことを確認しますか?ドキュメントに[php.net/fgetcsv]と書かれているように、0に設定してみて、違いが生じるかどうかを確認してください。

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 に答える