Мне трудно понять, как напрямую присвоить значение ключу массива. Я думаю, что код, который я сейчас использую (который работает), неэффективен, и этот код выполняется несколько тысяч раз при каждом импорте, который я выполняю.
Поэтому я выполняю цикл foreach через массив, и одно из действий — изменить ключ массива FEMALE
к F или если это MALE
к М.
В данный момент я пропускаю значение через строку, потому что код, который я пытался установить, не работает.
if ($csv[$k] ['gender'] == 'FEMALE') {
$string = 'F';
} else {
$string = 'M';
};
$csv[$k] ['gender'] = $string;
/редактировать
Общий код функции массива, предназначенной для загрузки файла CSV, а затем для изменения имен столбцов и внесения некоторых улучшений в данные (captical и т. Д.) Приведен ниже.
foreach ( $csv as $k=>$v )
{
$csv[$k] ['firstname'] = ucfirst(strtolower($csv[$k] ['firstname']));
$csv[$k] ['lastname'] = ucfirst(strtolower($csv[$k] ['lastname']));
$csv[$k] ['city'] = ucfirst(strtolower($csv[$k] ['city']));
$csv[$k] ['street'] = ucfirst(strtolower($csv[$k] ['street']));
$csv[$k] ['email'] = strtolower($csv[$k] ['email']);
if ($csv[$k] ['gender'] == 'FEMALE') {
$string = 'F';
} else {
$string = 'M';
};
$csv[$k] ['gender'] = $string;
}
Если вы хотите немного упростить свой фрагмент кода, вы можете использовать это:
$csv[$k]['gender'] = ( $csv[$k]['gender'] == "FEMALE" ) ? "F" : "M";
Это установит $ csv [$ k] [‘sex’] в «F», если «female» равно true, или «M», если false.
Кроме того, если все, что вам нужно, это установить значение от Мужской / Женский до F / M, вы можете просто подставить его
$csv[$k]['gender'] = substring( $csv[$k]['gender'], 0, 1 );
Других решений пока нет …