【发布时间】:2016-05-27 08:35:37
【问题描述】:
我正在解析 CSV 文件,大型 CSV 文件,我需要解析 str_getcsv 函数的第二个参数(分隔符),但老实说我不知道如何......
我试图绕过数组映射函数,但是 php 向我抛出了一个错误,即超出了允许的内存大小。我也尝试了array_walk,但得到了相同的结果。
这是函数现在的样子......
function parseIt($file)
{
$file = file($file);
// foreach ($file as $key => $value)
// {
// $rows[] = str_getcsv($value, ';');
// unset($file[$key]);
// }
// array_walk($file, function(&$item)
// {
// $item = str_getcsv($item, ';');
// });
// exit();
return array_map('str_getcsv', file($file));
}
所以,现在,我正试图弄清楚如何通过 array_map 将第二个参数传递给 str_getcsv...
【问题讨论】:
-
$delimiter = ';'; return array_map(function ($value) use ($delimiter) return str_getcsv($value, $delimiter); }, file($file)); -
但是,如果您正在处理大型 csv 文件,那么这种将整个文件加载到内存中的方法可能不是一个好主意
-
我不确定这能解决内存问题
-
@MarkBaker 你是对的。它不起作用,这是一个坏主意......加载整个文件,也就是说。
-
使用 fgetcsv() 在单个语句中读取和解析最容易一次读取一行