У меня есть простой анализатор, который анализирует 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;
Моя проблема в том, что в моих csvfiles иногда заголовки имеют верхний регистр в начале или в слове, но я не знаю, где я должен делать мой strtolower в моей функции синтаксического анализа, я хочу, чтобы только заголовки были в нижнем регистре ,
Похоже, что вы уже используете array_map, каждый раз, когда вы хотите преобразовать значения в структуре, вы должны заглянуть в функцию карты.
$keys = array_map('strtolower', array_shift($csv));
Как ключи в $keys
, вы можете отобразить strtolower
функция к $keys
только однажды:
$keys = array_shift($csv);
$keys = array_map('strtolower', $keys);