1

州と都市のリストからユーザーの州と都市を格納するMySqlテーブルがあります。私は各州を2文字の短縮バージョン(ワシントンの場合はWA、カリフォルニアの場合はCAなど)として具体的にコーディングしました。すべての都市には2文字の省略形があり、都市名は次のようにフォーマットされています。コロラド州ボルダーCO-boulderとユタ州ソルトレイクシティは次のようになりますUT-salt-lake-city。同じ都市名の異なる州を避けるため。UT-salt-lake-cityPHPは値( )を列の下に挿入しますCityが、PHPを介して変数を呼び出すと、次のように表示されます。Your location is: UT-salt-lake-city, Utah. これを解決するために、この変数のリストを作成しています。

    if ($city == "AL-auburn") { $city = "Auburn"; }
    else if ($city == "AL-birmingham") { $city = "Birmingham"; }
    else if ($city == "GA-columbus") { $city = "Columbus"; $state = "Georgia"; }
    else if ($city == "AL-dothan") { $city = "Dothan"; }
    else if ($city == "AL-florence") { $city = "Forence"; }
    else if ($city == "AL-muscle-shoals") { $city = "Muscle Shoals"; }
    else if ($city == "AL-gadsden-anniston") { $city = "Gadsden Anniston"; }
    else if ($city == "AL-huntsville") { $city = "Huntsville"; }
    else if ($city == "AL-decatur") { $city = "Decatur"; }
    else if ($city == "AL-mobile") { $city = "Mobile"; }
    else if ($city == "AL-montgomery") { $city = "Montgomery"; }
    else if ($city == "AL-tuscaloosa") { $city = "Tuscaloosa"; }

このプロセスを短縮する方法、または少なくとも別のファイルから呼び出す方法があるので、場所に電話をかけるたびにコピーして貼り付ける必要はありませんか?

4

3 に答える 3

2

ここでハッシュマップが必要です。PHP で配列として行うことができます。

$cities = array(
    "AL-auburn"     => array("Auburn"),
    "AL-birmingham" => array("Birmingham"),
    "GA-columbus"   => array("Columbus", "Georgia"),
    ...
);

if (isset($cities[$city])) {
    list($city, $state) = $cities[$city] + array(null, null);
}

次に、都市配列を保存することもできます。


または、既存の情報を利用することもできます。

list($state, $city) = explode('-', $city, 2);

$city = ucwords(strtr($city, '-', ' '));

次に、ハッシュマップを使用して州の 2 文字コードを長い名前に再度マップできます。

$states = array(
    'AL' => 'Alabama',
    'GA' => 'Georgia',
    ...
);

if (isset($states[$state])) {
    $state = $states[$state];
}
于 2012-10-10T03:38:55.217 に答える