您已经在PHP中使用了这种实现:
$csv = array_map('str_getcsv', file('someCSVfile.csv'));
说明:
> str_getcsv() – 将CSV字符串解析为数组.
> file() – 将整个文件读入数组.
> array_map(Function,Array) – 在将回调函数应用于每个元素之后,返回包含该数组的所有元素的数组.
示例输出:
//CSV
NAME,CLASS,ROOM
Sally,2018,312
Belinda,2017,148
//OUTPUT:
Array(
[0] => Array([0] => NAME, [1] => CLASS, [2] => ROOM),
[1] => Array([0] => Sally, [1] => 2018, [2] => 312),
[2] => Array([0] => Belinda, [1] => 2017, [2] => 148)
)
关联键
使用关联键解析两个快速函数 – 两者都基于array_map方法:
方法1:跑两次
function assoc_getcsv($csv_path) {
$r = array_map('str_getcsv', file($csv_path));
foreach( $r as $k => $d ) { $r[$k] = array_combine($r[0], $r[$k]); }
return array_values(array_slice($r,1));
}
方法2:运行一次
function assoc_getcsv($csv_path) {
$f = array();
function parse_csv_assoc($str,&$f){
if (empty($f)) { $f = str_getcsv($str); }
return array_combine($f, str_getcsv($str));
}
return array_values(array_slice(array_map('parse_csv_assoc', file($csv_path), $f),1));
}
示例输出:
//CSV
NAME,CLASS,ROOM
Sally,2018,312
Belinda,2017,148
//OUTPUT:
Array(
[0] => Array([NAME] => Sally, [CLASS] => 2018, [ROOM] => 312),
[1] => Array([NAME] => Belinda, [CLASS] => 2017, [ROOM] => 148)
)