基于变量显示阵列中的图像

时间:2013-02-13 18:43:29

标签: php arrays list country

根据用户的国家/地区,我想加载存储在数组中的国家/地区的标记图像。目前我只知道切换方法,如下:

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

..但是写一些条件需要一段时间,我相信一定有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

假设你可以控制命名,为什么不简单:

$userCountry = $country['Country'];

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

在命令行中使用“America”将提供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];
}

答案 1 :(得分:1)

创建一个数组,国家/地区代码为密钥,图片网址为值:

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

echo $countryFlags[$userCountryCode];