根据用户的国家/地区,我想加载存储在数组中的国家/地区的标记图像。目前我只知道切换方法,如下:
$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");
}
..但是写一些条件需要一段时间,我相信一定有更好的方法吗?
答案 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];