2010-08-01 3 views
3

변수가 $country 인 경우 ~ 50 개의 다른 값을 가질 수 있습니다.PHP else else 문

그리고 변수 $id.

if ($country = 'USA') { $id = 'usa_type'; } 
else if ($country = 'France') { $id = 'france_type'; } 
else if ($country = 'German') { $id = 'german_type'; } 
else if ($country = 'Spain') { $id = 'spain_type'; } 
... 
... 
... 
else if ($country = 'Urugway') { $id = 'urugway_type'; } 
else { $id = 'undefined'; } 

else if 문이 매번 반복 및 기타 데이터는 전형적인 :

는 우리가해야 할 것은 같은 $country 값에 대응 $id에 대한 값을 제공하는 것입니다.

이 코드를 더 짧게 만들 수있는 방법이 있습니까?

처럼 :

[france]:'france_type; 
[england]:'england_type; 
... 
[else]:'undefined' 

감사합니다.

+0

를 만들 수 있습니다 왜 중요한가? 더 짧은 코드가 이해하기 어렵고 너무 복잡하면 버그가 들끓는 잠재적 인 가능성이 있기 때문에 때때로 더 긴 코드를 갖는 것이 트레이드 오프의 가치가 있습니다. – James

답변

6

처럼 뭔가를 할 수 귀하의 예를보고 $id$country에서 :

$id = strtolower($country) . '_type'; 

먼저 필요 $country의 유효성을 확인하는 경우 모든 국가를 배열에 넣은 다음 in_array을 사용하여 i를 결정합니다. F $country 유효 :

$countries = array('USA', 'France', 'Germany', 'Spain', 'Uruguay'); 
if (in_array($country, $countries)) { 
    $id = strtolower($country) . '_type'; 
} 
+0

+1 그냥 내가 대답하려고했던 것! –

+0

완벽 해 보이네, 고마워! – James

1

방금 ​​만들 수

$id = strtolower($country) + '_type'; 
1

장소 같은 배열의 모든 국가 코드 :

$countries = array("0" => array("country_name" => "usa", 
           "country_type" => "001") , 

        "1" => array("country_name" => "uae", 
           "country_type" => "002"), 

        ----------------------------- 
        ----------------------------- 

       ); 

그런 다음 국가 이름을 비교하고 국가 ID를 얻기 위해 루프를 사용합니다.

$country = "usa"; 

for($i = 0; $i < count($countries); $i++) { 
    if($country == $countries[$i]["country_name"]){ 
     $id = $countries[$i]["country_type"]; 
     break; 
    } 
} 

echo $id; 
+0

너무 방대한 것 같습니다. – James

1

또는 배열

$country_to_id = array(
    "USA" => "usa_type", 
    "Spain" => "spain_type_or_whatever", 
    .... 
); 
$country_id = (array_key_exists($country,$country_to_id)) ? $country_to_id[$country] : 'undefined';