Excel を使用して CSV ファイルとして保存したファイルがあります (互換性の問題を回避するために、Windows 7 と Mac OSX の両方で試しました)。
私がこれを行うとき:
ini_set('auto_detect_line_endings', true);
$filename = 'import/clientsimport.csv';
$csvfile = file_get_contents($filename);
$csvarray = str_getcsv($csvfile);
print_r($csvarray);
mysql_close();
すべての行が 1 つの行に変わり、1 レベルの深さしかなく、何千ものキーが連続して実行される配列が得られます。
そこで、別のアプローチを試しました:
ini_set('auto_detect_line_endings', true);
$filename = 'import/clientsimport.csv';
$csvfile = fopen($filename,'r');
$csvarray = fgetcsv($csvfile);
print_r($csvarray);
これは最初の行 (ヘッダーの行) のみを返し、それを超えることはありません。これを正しく行うにはどうすればよいですか?何百もの行があり、行ごとに約 12 個の配列があるため、2 次元のものを取得する必要があります。
CSV では、各行は改行で区切られ、値はコンマで区切られます。囲みはありません。