2010-08-01 261 views
3

我們有變量$country,它可以給~50個不同的值。PHP if else語句

和變量$id

我們應該做的是給價值$id對應$country值,如:

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語句重複,每次和其他數據是典型的。

有沒有辦法縮短這段代碼?

像:

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

感謝。

+0

爲什麼這很重要?如果較短的代碼難以理解,並且如此複雜,則有可能發生錯誤,因此有時需要更長的代碼是值得的。 – James 2010-08-01 09:03:49

回答

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正是我即將回答的! – 2010-08-01 08:20:27

+0

看起來很完美,謝謝你! – James 2010-08-01 08:24:56

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 2010-08-01 08:29:06

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';