PHP if else语句

3

我们有一个变量$country,它可以给出大约50个不同的值。

还有一个变量$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'

感谢。

为什么这很重要?有时候,如果较短的代码难以理解且过于复杂,可能会导致错误的出现,那么拥有更长的代码是值得权衡的。 - James
5个回答

6

你可以直接从 $country 创建 $id

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

如果您需要确定$country的有效性,请将所有国家放入数组中,然后使用in_array函数来确定$country是否有效:

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

4

开关语句更短吗?因为有那些break语句? - 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;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接