dongqinta4174 2013-09-02 13:25
浏览 13
已采纳

有没有更好的方法在PHP中编写这个名称转换函数?

Persian day names are different than English, and also week starts Saturday. So I have this weekday name and number conversion function:

function getDayNames($day, $shorten = false, $len = 1, $numeric = false)
{
    $ret = '';
    switch ( strtolower($day) ) {
        case 'sat': case 'saturday':  $ret = 'شنبه'; $n = 1; break;
        case 'sun': case 'sunday':    $ret = 'یکشنبه'; $n = 2; break;
        case 'mon': case 'monday':    $ret = 'دوشنبه'; $n = 3; break;
        case 'tue': case 'tuesday':   $ret = 'سه شنبه'; $n = 4; break;
        case 'wed': case 'wednesday': $ret = 'چهارشنبه'; $n = 5; break;
        case 'thu': case 'thursday':  $ret = 'پنجشنبه'; $n = 6; break;
        case 'fri': case 'friday':    $ret = 'جمعه'; $n = 7; break;
    }
    return ($numeric) ? $n : (($shorten) ? substr($ret, 0, $len) : $ret);
}

and I wanna know if there is a better way to rewrite this. Using switch is not ideal.

Thanks in advance.

  • 写回答

1条回答 默认 最新

  • doumianfeng5065 2013-09-02 13:29
    关注

    Possibly arrayify it:

    function getDayNames($day, $shorten = false, $len = 1, $numeric = false) {
        $days = array(
            'sat' => 'شنبه',
            'sun' => 'یکشنبه',
            'mon' => 'دوشنبه',
            'tue' => 'سه شنبه',
            'wed' => 'چهارشنبه',
            'thu' => 'پنجشنبه',
            'fri' => 'جمعه'
        );
    
        $key = substr(strtolower($day), 0, 3);
        if (array_key_exists($key, $days) {
            $ret = $days[$key];
        } else {
            throw new Expection('Day ' . $day . ' not found!');
        }
    
        return ($numeric) ? (array_search($key, array_keys($days)) + 1) : (($shorten) ? substr($ret, 0, $len) : $ret);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么