Недавно, делая импорт с такими же проблемами, просто написал пару функций и применял их к каждому такому полю:
private function makeLowIdList($array)
{
return array_flip(array_map(fn($value) => mb_convert_case($value, MB_CASE_LOWER), $array));
}
private function getId($idList, $title, $label)
{
$lowTitle = mb_convert_case($title, MB_CASE_LOWER);
if(!array_key_exists($lowTitle, $idList)) {
throw new Exception('wrong ' . $label . ': ' . $title);
}
return $idList[$lowTitle];
}
public function import($data)
{
$payerIds = $this->makeLowIdList(Payer::getTitles());
foreach(...) {
try {
...
$payerId = $this->getId($payerIds, $row['payer'], $row['orderNumber'] . ' payer');
...
} catch(Exception $e) {
$error = $e->getMessage();
if(!in_array($error, $errors)) {
$errors[] = $error;
}
}
}
return $errors;
}