【发布时间】:2016-12-26 01:50:51
【问题描述】:
这是我的制表符分隔的 CSV(顺便说一下,我在此处设置了空格而不是制表符):
header1 header2 header3 header4
value1 value2 value3
value2 value2
如果我使用此函数,它会将 CSV 作为数组返回但不完整:
$content = file($file, FILE_SKIP_EMPTY_LINES);
$rows = array_map('str_getcsv', $content, array_fill(0, count($content), "\t"));
这也不起作用:
if(file_exists($file)){
$rows = array_map(function($v){
return str_getcsv($v, "\t");
}, file($file, FILE_SKIP_EMPTY_LINES));
}
输出:
Array(
[0] => Array(
[0] => header1
[1] => header2
[2] => header3
[3] => header4
)
[1] => Array(
[0] => value1
[1] => value2
[2] => value3
)
[2] => Array(
[0] => value1
[1] => value2
)
)
它似乎将空选项卡视为一个,因此与标题相反,值将具有不完整的数组。
预期:
Array(
[0] => Array(
[0] => header1
[1] => header2
[2] => header3
[3] => header4
)
[1] => Array(
[0] => value1
[1] => value2
[2] => value3
[3] =>
)
[2] => Array(
[0] => value1
[1] => value2
[2] =>
[3] =>
)
)
【问题讨论】:
-
是的,我意识到我已经发布了一个以空格分隔的 CSV,但本质上,如果它是制表符,输出将与上面的值相同,其中值的列数不相等。