Выполнение этого в PHP
У пользователя есть аббревиатура для города, которая сохраняется в виде строки, например:
ANA
BOS
VAN
Они означают: Anaheim
Boston
Vancouver
Я хочу, чтобы, когда я получаю вход/строку, он меняет имя строки на полное имя.
ANA
→ Anaheim
BOS
→ Boston
VAN
→ Vancouver
Каков наилучший способ сделать это? Спасибо всем, очень признателен.
обновление: исправлено, поэтому нет "неопределенного индекса" - уведомление в случае, если вы получили такой низкий уровень error_reporting
:
$names["ANA"] = "Anaheim";
$names["BOS"] = "Boston";
$names["VAN"] = "Vancouver";
function getFullName($input, $names)
{
//turning all input into upper case letters:
$input = strtoupper($input);
//making sure input is maximum 3 characters long:
$input = substr($input, 0, 3);
if(!array_key_exists($input, $names))
{
return "*ERROR: Unknown City Abbreviation*";
}
else
{
return $names[$input];
}
}
//usage:
$user_input = "bos";
echo getFullName($user_input, $names);
NULL
если индекс не существует.
Ответ Peut22 ist работает, но я думаю, что лучше хранить пары в массиве, чтобы быть более удобным для обслуживания. Вы также можете получить этот массив из базы данных или файла конфигурации.
$names = array(
"ANA" => "Anaheim",
"BOS" => "Boston",
"VAN" => "Vancouver",
);
if(array_key_exists((string)$userinput, $names)) {
echo $names[$userinput];
} else {
echo "invalid";
}
Я думаю, вы получите хороший результат, используя переключатель, который возвращает полное имя, если вы хотите получить аббревиатуру, полной строки ввода, если имя не распознано.
Пример в псевдокоде:
Switch string case "ANA": string = "Anaheim" case "BOS": string = "boston" end
EDIT: если вы используете php, тогда код будет выглядеть так:
switch ($i) {
case "ANA":
$i="anaheim"
break;
case "BOS":
$i="boston"
break;
}