2015-02-24 96 views
0

我將「Mon-Fri」日期翻譯成我的母語。爲此,您可以選擇不同的方式。有ifcasearray等..我現在做如果有什麼不對的做我選擇的方式。 (if)?將日期時間日期翻譯成其他語言的最佳方法

PHP

//Translate days to Swedish 
if($day == "Mon"){ 
    $day = "Mån"; 
} 
if($day == "Tue"){ 
    $day = "Tis"; 
} 
if($day == "Wed"){ 
    $day = "Ons"; 
} 
if($day == "Thu"){ 
    $day = "Tor"; 
} 
if($day == "Fri"){ 
    $day = "Fre"; 
} 
if($day == "Sat"){ 
    $day = "Lör"; 
} 
if($day == "Sun"){ 
    $day = "Sön"; 
} 
+0

您可以使用'IF' ELSEIF'。 – 2015-02-24 07:56:03

+0

請看看這個問題:http://stackoverflow.com/questions/8744952/php-how-to-format-a-given-datetime-object-considering-localegetdefault – chapay 2015-02-24 08:00:10

回答

0

你的方法是確定的。但是,無論以前是否匹配,您都會比較$day變量的7倍。

代碼的重構將是如下:

if($day == "Mon"){ 
    $day = "Mån"; 
}elseif($day == "Tue"){ 
    $day = "Tis"; 
}elseif($day == "Wed"){ 
    $day = "Ons"; 
}elseif($day == "Thu"){ 
    $day = "Tor"; 
}elseif($day == "Fri"){ 
    $day = "Fre"; 
}elseif($day == "Sat"){ 
    $day = "Lör"; 
}else{ 
    $day = "Sön"; 
} 

如果$day被匹配它避免了執行其他比較這種方式。

可替換地可以使用開關情況下,這將避免在鍵入重複碼:

$day = "Tue"; 

switch($day){ 
    case "Mon": 
     $day = "Mån"; 
     break; 
    case "Tue": 
     $day = "Tis"; 
     break; 
    case "Wed": 
     $day = "Ons"; 
     break; 
    case "Thu": 
     $day = "Tor"; 
     break; 
    case "Fri": 
     $day = "Fre"; 
     break; 
    case "Sat": 
     $day = "Lör"; 
     break; 
    case "Sun": 
     $day = "Sön"; 
     break; 
} 
echo $day; 

的最佳方法是使用一個數組這避免在執行條件語句(如果elseif的和的情況下)

$days = array(
    "Mon" => "Mån", 
    "Tue" => "Tis", 
    "Wed" => "Ons", 
    "Thu" => "Tor", 
    "Fri" => "Fre", 
    "Sat" => "Lör", 
    "Sun" => "Sön" 
    ); 

echo $days["Fri"]; 
+1

認真?接受的答案?如果你不得不把你的日期翻譯成10種不同的語言呢? – chapay 2015-02-24 08:44:47

+0

先閱讀問題。用戶既沒有要求多語言翻譯也沒有要求日期。他只問他的母語翻譯,詢問他的方法的有效性。 – 2015-02-24 09:25:28

+0

好吧,你是絕對正確的。但至少要在你的答案中添加幾個變體。而'switch'將更加緊湊。 – chapay 2015-02-25 07:10:55

2

您可以使用數組。

$myDays = array("Mon"=>"Mån","Tue"=>"Tis","Wed"=>"Ons","Thu"=>"Tor","Fri"=>"Fre","Sat"=>"Lör","Sun"=>"Sön"); 

echo $myDays[date("D", strtotime('now'))];