0

ユーザーの国に応じて、配列に格納されている国の旗の画像を読み込みたいです。現在、次のような switch メソッドしか知りません。

$countryFlags = array("afghanistan.png", "albania.png", "algeria.png", "andorra.png" ... );

// gets the user country from DB
$userCountry = $country['Country'];

switch($userCountry) {
    case "Australia":
        echo /* the image name from countryFlags array */ ; break;
    case "America":
        echo /* the image name from countryFlags array */ ; break;
    default:
        echo("Unknown");
}

..しかし、条件を書くにはしばらく時間がかかります。それを行うためのより良い方法があるに違いないと思いますか?

4

2 に答える 2

2

ネーミングを制御できると仮定すると、単純に次のようにはなりません。

$userCountry = $country['Country'];

echo strtolower($userCountry) . ".png";

コマンドラインで「アメリカ」を指定すると、america.pngリターンが得られます。

それができない場合は、次のように配列を作成します。

$countryFlags = array(
  "America" => "america.png",
  "Afganistan" => "afganistan.png",
  ...etc...
);

echo $countryFlags[$userCountry];

編集::

上記2つのミックス&マッチ

//Define list of countries that aren't a direct translation
$countryFlags = array(
  "Canada" => "cdn_flag.png",
  "Mexico" => "mexico.jpg",
);

if ( !in_array($userCountry,$countryFlags) ) {
  echo strtolower($userCountry) . ".png";
} else {
   echo $countryFlags[$userCountry];
}
于 2013-02-13T18:47:07.747 に答える
1

国コードをキー、画像 URL を値として配列を作成します。

$countryFlags = array();
$countryFlags['za'] = images/za.png;
$countryFlags['us'] = images/us.png;
// etc...

echo $countryFlags[$userCountryCode];
于 2013-02-13T18:48:47.450 に答える