1

我有这个功能

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”。为什么?

4

2 回答 2

4

你应该使用做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...');

于 2013-03-24T13:38:45.073 回答
1

php NoOb根据您对's post的评论,您正在通过字符串传递一个长空格。您可以对字符串中的空格使用修剪功能。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";
    }
}
于 2013-03-24T14:07:38.890 回答