2015-02-24 3 views
0

Я переводил дни «Mon -Fri» на свой родной язык. Для этого вы можете выбрать разные способы. Существует ifcasearray и т. Д. Теперь я понимаю, есть ли что-то не так, как я делал это. (if)?Лучший способ перевести datetime DAY на другие языки

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'. –

+0

Пожалуйста, посмотрите на этот вопрос: http://stackoverflow.com/questions/8744952/php-how-to-format-a-given-datetime-object-considering-localegetdefault – chapay

ответ

0

Ваш подход нормально. Однако вы сравниваете 7 раз переменную $day, независимо от того, была ли она сопоставлена ​​ранее.

рефакторинга вашего кода будет выглядеть следующим образом:

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

+0

Сначала прочитайте вопрос. Пользователь не спрашивал ни о многоязычном переводе, ни о датах. Он попросил только о переводе на родном языке и спросил об эффективности своего подхода. –

+0

Ок, хорошо, вы абсолютно правы. Но, по крайней мере, добавьте несколько вариантов ответа. И 'switch' будет более компактным. – chapay

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