如何理解switch语句的奇怪行为?

时间:2013-03-24 13:35:13

标签: php switch-statement

我有这个功能

private function getCurrencyByCountry($country){
    switch($country){
        case "US": return "USD"; break;
        case "UA": return "UAH"; break;
        case "FR":
        case "DE":
        case "ES":
        case "IT":return "EUR";  break;
        default: return "USD-default";
    }
}

当我用参数“UA”调用此方法时,此函数返回“USD-default”。 为什么呢?

2 个答案:

答案 0 :(得分:4)

你应该使用do var_dump($country); 之前,

switch($country){
        case "US": return "USD"; break;

因为,我非常确定,你通过参数传递的不仅仅是“字符串”。


或者,下面的内容也会派上用场,因为它也可以完成工作。

<?php 
function foo($country) {
    $value = array(); 

       switch($country){
            case "US": 
            $value = "USD"; 
            break;
         case "UA": 
             $value = "UAH"; 
             break;
         case "FR":
         case "DE":
         case "ES":
         case "IT": 
             $value = "EUR"; 
             break;
             default: $value = "USD-default";
    }

    if(!empty($value)){
        return $value; 
        }

}

echo foo('Whatever...');

答案 1 :(得分:1)

根据你对php NoOb帖子的评论,你在字符串中传了一个很长的空格。您可以使用trim函数来trim字符串中的空格。

private function getCurrencyByCountry($country)
{
    $country = strtolower(trim($country));
    switch($country)
    {
        case "us":
            return "USD";

        case "ua":
            return "UAH";

        case "fr":
        case "de":
        case "es":
        case "it":
            return "EUR";

        default:
            return "USD-default";
    }
}