2017-03-24 61 views
1

這是我的PHP功能,將月份名稱從英文更改爲其他語言,並且此功能正常工作。如何通過數組鍵值簡化PHP函數?

function _ld($sqldate, $lang){ 
    if(!$sqldate) $sqldate=date("Y-m-d"); 
    $phpdate = strtotime($sqldate); 
    $phpdate = date('d M Y', $phpdate); 
    $eng = array("Jan", "Feb", "Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); 
    $kan = array("ಜನವರಿ", "ಫೆಬ್ರವರಿ", "ಮಾರ್ಚ್","ಏಪ್ರಿಲ್", "ಮೇ", "ಜೂನ್","ಜುಲೈ", "ಆಗಸ್ಟ್", "ಸೆಪ್ಟೆಂಬರ್","ಅಕ್ಟೋಬರ್", "ನವಂಬರ್", "ಡಿಸೆಂಬರ್"); 
    $hin = array("जनवरी", "फ़रवरी", "मार्च","अप्रैल","मई","जून","जुलाई","आगस्त","सितम्बर","अकतूबर","नवेम्बर","दिसम्बर"); 
    switch ($lang) { 
     case "kan" : 
      $to = $kan; 
      break; 
     case "eng" : 
      $to = $eng; 
      break; 
     case "hin" : 
      $to = $hin; 
      break; 
     default : 
      $to = $kan; 
    } 
    return str_replace($eng, $to, $phpdate);  
} 

echo _ld(); 

現在我想通過在array (key=>values)中添加語言來簡化此功能。這可能嗎?如果是,如何?

請幫幫我。

+0

您目前的實施有什麼問題。你能否詳細說明一下? – paullb

+0

@paullb正如我所說,這工作正常。但我想知道是否可以通過key => values'將'language variables'添加到單個數組中並使用它? –

+1

請粘貼你的願望輸出。 –

回答

1

這是我的嘗試:https://repl.it/GbwN/4
所以我花了我一陣正確的格式化陣列(大量的一對一複製粘貼)。

我們將月份存儲在$month並用它遍歷我們的$months的密鑰。
刪除了您的$eng陣列,因爲它感覺多餘。
str_replace現在替代string而不是Array

請注意$lang = 0用於kan$lang = 1用於hin

function _ld($sqldate, $lang){ 
    if(!$sqldate) $sqldate=date("Y-m-d"); 
    $phpdate = strtotime($sqldate); 
    $month = date('M', $phpdate); 
    $phpdate = date('d M Y', $phpdate); 

    $months = array(
    "Jan" => array("ಜನವರಿ", "जनवरी"), 
    "Feb" => array("ಫೆಬ್ರವರಿ", "फ़रवरी"), 
    "Mar" => array("ಮಾರ್ಚ್", "मार्च"), 
    "Apr" => array("ಏಪ್ರಿಲ್", "अप्रैल"), 
    "May" => array("ಮೇ", "मई"), 
    "Jun" => array("ಜೂನ್", "जून"), 
    "Jul" => array("ಜುಲೈ", "जुलाई"), 
    "Aug" => array("ಆಗಸ್ಟ್", "आगस्त"), 
    "Sep" => array("ಸೆಪ್ಟೆಂಬರ್", "सितम्बर"), 
    "Oct" => array("ಅಕ್ಟೋಬರ್", "अकतूबर"), 
    "Nov" => array("ನವಂಬರ್", "नवेम्बर"), 
    "Dec" => array("ಡಿಸೆಂಬರ್", "दिसम्बर") 
); 

    switch ($lang) { 
    case "eng" : 
     return $phpdate; 
     break; 
    case "kan" : 
     $lang = 0; 
     break; 
    case "hin" : 
     $lang = 1; 
     break; 
    default : 
     $lang = 0; 
    }  

    return str_replace($month, $months[$month][$lang], $phpdate); 
} 

echo _ld("2017-02-29","hin"); 

你可以添加鍵每個月的語言,如:

「揚」=>陣列( 「根」=> 「ಜನವರಿ」, 「欣」=> 「जनवरी」)

並將$lang = 0更改爲$lang = "kan"來指定我們想要獲取哪個數組項。
我避免這種情況,因爲我不喜歡在我的代碼中反覆重複同樣的事情。

+0

處理。謝謝。我努力在這個函數中實現數組。 –