如何使用数组键值简化PHP函数?

时间:2017-03-24 04:43:18

标签: php arrays

这是我的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)添加语言来简化此功能。这可能吗?如果是,怎么样?

请帮帮我。

1 个答案:

答案 0 :(得分:1)

这是我的尝试:https://repl.it/GbwN/4
所以我花了一段时间才正确地格式化数组(大量的逐个拷贝粘贴)。

我们将月份存储在CREATE TABLE JagBank.AccountType ( typeID INT(4) NOT NULL , type VARCHAR(15) NULL , interestRate DOUBLE NULL , PRIMARY KEY (typeID)) ENGINE = InnoDB; ,并使用它来遍历我们的$month键。
删除了$months数组,因为它感觉多余 $eng现在取代str_replace而不是string

请注意Array适用于$lang = 0kan适用于$lang = 1

hin

您可以为每个月的语言添加键,如:

  

“Jan”=> array(“kan”=>“ಜನವರಿ”,“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以指定我们想要获取的数组项 我避免这样做,因为我不喜欢在我的代码中反复重复同样的事情。