1

我有一个使用 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 级深度的数组,并且可以连续运行到数千个键。

所以我尝试了另一种方法:

ini_set('auto_detect_line_endings', true);
$filename = 'import/clientsimport.csv';
$csvfile = fopen($filename,'r');
$csvarray = fgetcsv($csvfile);
print_r($csvarray);

这仅返回第一行(标题行)并且不会超出它。我该如何正确地做到这一点?有数百行,每行大约有十几个数组,所以我应该得到一个二维数组。

在 CSV 中,每一行都由换行符分隔,值由逗号分隔 - 没有附件。

4

2 回答 2

2

像这样的东西怎么样:

$multiarray = array();
while ($linearray = fgetcsv($cvsfile)) {
   $multiarray[] = $linearray;
}
于 2012-02-28T00:17:54.873 回答
1

通过使用不同关键字的另一个搜索解决了该问题:

php str_getcsv 数组问题

有答案。基本上我将我的文件读取机制修改为:

$csvfile = fopen($filename,'rb');
while(!feof($csvfile)) {
$csvarray[] = fgetcsv($csvfile);
}

rb 我假设正在阅读换行符?while 语句循环遍历行。我完全忘记了 fopen 在分解内容和必须循环方面是如何工作的,这与 file_get_contents() 仅返回一个长字符串不同。

于 2012-02-28T00:16:36.603 回答