我有一个简单的解析器,可以解析一个csv文件并返回一个由标题行中的单元格名称索引的数组,这是我的代码:
$file = file(public_path() .'/screens/'. $file, FILE_SKIP_EMPTY_LINES);
$csv = array_map("str_getcsv", $file, array_fill(0, count($file), ';'));
$keys = array_shift($csv);
$response = (object)array();
foreach ($csv as $i => $row) {
// Combine headers with values
$csv[$i] = array_combine($keys, $row);
$wellName = $csv[$i]["Well"];
$response->{$wellName} = array_combine($keys, $row);
}
return $response;
我的问题是,在我的csvfile文件中,有时标头在开头或单词中有一个大写字母,但是我不知道在解析函数中应该在哪里做我的strtolower,我希望仅标头是在较小的情况下。
答案 0 :(得分:2)
好像您已经在使用array_map一样,每当您要在结构中转换值时,都应该查看map函数。
$keys = array_map('strtolower', array_shift($csv));
答案 1 :(得分:2)
由于键位于$keys
中,因此只能将strtolower
函数映射到$keys
一次:
$keys = array_shift($csv);
$keys = array_map('strtolower', $keys);