2010-08-01 7 views
3

Nous avons la variable $country, il peut donner ~ 50 valeurs différentes.PHP si d'autres instructions

Et variable $id.

Ce que nous devons faire est de donner une valeur pour $id correspondant à $country valeur, comme:

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 déclaration répète à chaque fois, et d'autres données est typique.

Existe-t-il un moyen de raccourcir ce code?

Comme:

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

Merci.

+0

Pourquoi est-ce important? Parfois, avoir un code plus long vaut le compromis si le code le plus court est plus difficile à comprendre et est si complexe qu'il y a un risque que des bogues s'y inscrivent. – James

Répondre

6

Vous pouvez simplement créer $id de $country:

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

Si vous devez d'abord déterminer la validité de $country , mettez tous vos pays dans un tableau, puis utilisez in_array pour déterminer i f $country est valide:

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

+1 Juste ce que j'étais sur le point de répondre aussi! –

+0

Regarde parfait, merci l'homme! – James

1

regardant votre exemple, vous pourriez faire quelque chose comme

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

place tous les pays et les codes dans ce tableau comme:

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

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

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

       ); 

boucle Puis utilisez pour comparer le nom du pays, puis obtenir id pays.

$country = "usa"; 

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

echo $id; 
+0

il semble être trop massif. – James

1

ou vous pouvez créer un tableau

$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'; 
Questions connexes