Php 基于变量显示数组中的图像
根据用户的国家,我希望加载存储在数组中的国家的国旗图像。目前我只知道切换方法,如:Php 基于变量显示数组中的图像,php,arrays,list,country,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":
$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");
}
。。但是写条件需要一段时间,我相信一定有更好的方法可以做到这一点?假设您可以控制命名,为什么不简单地:
$userCountry = $country['Country'];
echo strtolower($userCountry) . ".png";
在命令行中给它“America”将提供America.png
return
如果不能这样做,请按如下方式构造数组:
$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];
}
假设您可以控制命名,为什么不简单地:
$userCountry = $country['Country'];
echo strtolower($userCountry) . ".png";
在命令行中给它“America”将提供America.png
return
如果不能这样做,请按如下方式构造数组:
$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];
}
创建一个以国家代码为键、图像URL为值的数组:
$countryFlags = array();
$countryFlags['za'] = images/za.png;
$countryFlags['us'] = images/us.png;
// etc...
echo $countryFlags[$userCountryCode];
创建一个以国家代码为键、图像URL为值的数组:
$countryFlags = array();
$countryFlags['za'] = images/za.png;
$countryFlags['us'] = images/us.png;
// etc...
echo $countryFlags[$userCountryCode];
为什么不完全去掉数组,使用国家名称,小写(使用
strtolower()
)并查看是否存在该名称的PNGfile_()
?@Pekka웃 嗯..但是名称不是完全匹配的,有些可能是不同的,它还能工作吗?为什么不完全去掉数组,使用国家的名称,小写(使用strtolower()
)并查看是否存在该名称的PNGfile_()
?@Pekka웃 嗯..但是名称不是完全匹配的,有些可能不同,它仍然有效吗?嗯..但是名称(来自db和文件名)不是完全匹配的,有些不同,我想它不会起作用吗?@Nimbuz在这种情况下使用他的答案的第二部分。有275个名称,我不想手动编写,这就是问题:)如果db和.png文件之间没有命名约定,那么数组似乎是最好的选择。它们有什么不同?你能用正则表达式匹配它们吗?是的,这是一个不幸的事实,你要么在名称上强制一个标准,这样你就可以做像#1或类似的把戏,要么花时间写出你的常量列表,以后可以引用。嗯……但是名称(来自db和文件名)并不完全匹配,有些是不同的,我想这样不行?@Nimbuz在这种情况下使用他的答案的第二部分。共有275个名称,我不想手动编写,问题是:)如果db和.png文件之间没有命名约定,那么数组似乎是最好的选择。它们有什么不同?你能用正则表达式匹配它们吗?是的,这是一个不幸的事实,你要么在名称上强制使用一个标准,这样你就可以做像#1或类似的把戏,要么花时间写出你的常量列表,以后可以引用。顺便说一句,我喜欢用精灵作为图像标志,这是一个很好的来源;)顺便说一下,我喜欢使用精灵作为图像标志,这里有一个很好的来源;)