与硬编码相比,使用foreach作为开关值

时间:2015-03-13 15:33:34

标签: php

我允许用户在注册时定义他们的国家/地区。我将使用ajax和数据库中的国家/地区列表来填充选择选项。现在最好将这些代码硬编码到交换机中:

switch($country):
   case 'United States':
       $usercountry = 'United States'; 
   break;
   //etc
   default: $usercountry = 'Not Set';
endswitch;

或者做一个foreach会更好吗?举个例子:

switch($country):

foreach($sitecountries as $countries):
   case $countries:
       $usercountry = $countries; 
   break;
   default: $usercountry = 'Not Set';
endforeach;

endswitch;

使用一个代码与另一个代码是否有任何好处,授予第一个开关将是巨大的,所以第二个似乎击败了它。

问题太广泛:与使用硬编码中的值相比,使用foreach作为开关的好处是什么。

3 个答案:

答案 0 :(得分:1)

第二个可能是更好的选择,但是如果可以的话,可以用开关代替:

$usercountry = 'Not Set';
foreach($sitecountries as $countries){

    if($country == $usercountry){
       $usercountry = $countries; 
       break;
    }
}

答案 1 :(得分:1)

假设您为自己的国家/地区使用某种代码,可以使用数组进行映射并以这种方式映射:

$countries = array(
                    'United States'=>'us',
                    'Netherlands'=>'nl'
                   );

简单地使用:

$countries['United States']; 

它将输出'us'

答案 2 :(得分:0)

为什么你不做类似的事情:

if($country)
{
  $userCountry = $country;
}
else{
  $userCountry = "Not Set";
}

另一种编码方式:

$userCountry = $country ?: "Not Set";