【问题标题】:Changing string names from a list从列表中更改字符串名称
【发布时间】:2015-10-29 03:39:12
【问题描述】:

在 PHP 中执行此操作

我让用户输入了一个城市的缩写,它被保存为一个字符串,例如:

ANA BOS VAN

这些代表:
Anaheim
Boston
Vancouver

我想要它,这样当我得到输入/字符串时,它将字符串名称更改为它的全名

ANA -> Anaheim
BOS -> Boston
VAN -> Vancouver

解决此问题的最佳方法是什么?谢谢大家,不胜感激。

【问题讨论】:

  • 最好的办法是首先告诉我们您使用的是什么语言。
  • 对不起。我正在使用 PHP。

标签: php arrays string rename


【解决方案1】:

Peut22 的答案是有效的,但我认为最好将这些对存储在一个数组中以便更容易维护。您也可以从数据库或配置文件中获取此数组。

 $names = array(
    "ANA" => "Anaheim",
    "BOS" => "Boston",
    "VAN" => "Vancouver",
);

if(array_key_exists((string)$userinput, $names)) {
    echo $names[$userinput];
} else {
    echo "invalid";
}

【讨论】:

  • 这里用一个函数不是更好吗?还是每次要在代码中翻译城市缩写时都需要使用此代码?那么人们用小写写什么呢?
【解决方案2】:

更新: 已修复,因此没有“未定义索引” - 请注意,如果您的 error_reportinglevel 集如此之低:

$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);

【讨论】:

  • @shock_gone_wild 不,如果索引不存在,它会返回NULL
  • AND 产生一个未定义的索引通知(抱歉不是错误)我刚刚测试了它
  • @shock_gone_wild 是的 - 好的。通知...好的。
【解决方案3】:

我认为你会得到一个很好的结果,使用一个开关,如果你碰巧得到一个缩写,它会返回全名,如果名称不被识别,则返回完整的输入字符串。

伪代码示例如下:

Switch string case "ANA" : string = "Anaheim" case "BOS" : string = "boston" end

编辑:如果您使用的是 php,则代码将如下所示:

switch ($i) {
case "ANA":
    $i="anaheim"
    break;
case "BOS":
    $i="boston"
    break;

}

【讨论】:

  • 完美!非常感谢。 :)
  • 这几乎是正确的...您的 php 代码会产生未定义的常量通知。您应该将开关盒放在 '' 中,例如 switch 'ANA' :
  • 这很难维护和扩展恕我直言。假设您从数据库中获得了缩写 - 名称对,那么几乎不可能使用您的代码。
  • @low_rents 这个算法确实没有针对大型php数据库进行优化,但是这个问题首先是在没有任何语言规范的情况下提出的(为什么我用伪代码解释),所以切换似乎合理,它仍然是实现起来非常简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多