2017-03-24 1 views
1

Dies ist meine PHP-Funktion, um Monatsnamen von Englisch in andere Sprachen zu ändern und diese Funktion funktioniert gut.Wie vereinfacht PHP-Funktion mit Array-Schlüssel-Werte?

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(); 

Jetzt möchte ich diese Funktion vereinfachen, indem Sprachen array (key=>values) hinzufügen. Ist das möglich? Wenn ja, wie?

Bitte helfen Sie mir.

+0

Was ist falsch mit Ihrer aktuellen Implementierung. Kannst du bitte etwas ausarbeiten? – paullb

+0

@ paullb Wie gesagt, das funktioniert gut. Aber ich möchte lernen, ist es möglich, 'Sprachvariablen' zu einem' einzelnen Array mit Schlüssel => Werten' hinzuzufügen und zu benutzen? –

+1

Bitte fügen Sie Ihre Wunschausgabe ein. –

Antwort

1

Hier ist mein Versuch: https://repl.it/GbwN/4
mir also eine Weile dauerte es richtig das Array zu formatieren (eine Tonne one-by-one Kopie Einfügen).

Wir speichern den Monat unter $month und verwenden es, um durch unsere $months 's Schlüssel zu iterieren.
Ihr $eng Array wurde entfernt, weil es sich überflüssig anfühlt.
str_replace ersetzt jetzt string anstelle von Array.

Beachten Sie, dass $lang = 0 für kan ist, während für hin steht.

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"); 

Sie könnten Schlüssel in den die Sprache des Monats wie:

"Jan" => array ("kan" => "ಜನವರಿ", "hin" => "जनवरी")

und ändern Sie $lang = 0 zu $lang = "kan", um anzugeben, welches Array-Element wir erhalten möchten.
Ich vermied das, da ich es vorziehe, das Gleiche nicht immer wieder in meinem Code zu wiederholen.

+0

Danke. Ich hatte Schwierigkeiten, Arrays in dieser Funktion zu implementieren. –