在array_combine中小写

时间:2018-07-13 12:15:32

标签: php csv lowercase

我有一个简单的解析器,可以解析一个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,我希望仅标头是在较小的情况下。

2 个答案:

答案 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);