我有以下csv文件:
1,1,1
2,2,2
3,3,3
以及以下php代码:
$row = str_getcsv(file_get_contents($filename));
print_r($row);
结果:
Array
(
[0] => 1
[1] => 1
[2] => 1
2
[3] => 2
[4] => 2
3
[5] => 3
[6] => 3
)
应该是:
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 2
[4] => 2
[5] => 2
[6] => 3
[7] => 3
[8] => 3
)
为什么会发生这种情况?我的目标是在多维数组中读取csv。谢谢!
答案 0 :(得分:2)
str_getcsv
期望 CSV输入的单行。你必须这样使用它:
$csv = file($filename, FILE_IGNORE_NEW_LINES);
$data = array();
foreach ($csv as $line) {
$data[] = str_getcsv($line);
}
但如果你这样做,你也可以使用效率更高的fgetcsv
:
$fh = fopen($filename, 'r');
$data = array();
while ($row = fgetcsv($fh)) {
$data[] = $row;
}
答案 1 :(得分:1)
这是因为在最后1和最后2之后没有逗号:)
答案 2 :(得分:1)
str_getcsv
只能解析一行csv数据,而不是整数。
您可以通过循环获得结果,或者只是
$row = str_getcsv(join(',', file($filename)));
如果格式已修复,您可以改为使用explode
。
或者对于文件,有 fgetcsv 功能。