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];

编辑::

以上两种的混合搭配

//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 回答