有没有更好的方法在php中编写这个名称转换函数?
波斯语日的名称不同于英语,而且一周从星期六开始。所以我有一个工作日名称和数字转换函数:有没有更好的方法在php中编写这个名称转换函数?,php,function,switch-statement,farsi,Php,Function,Switch Statement,Farsi,波斯语日的名称不同于英语,而且一周从星期六开始。所以我有一个工作日名称和数字转换函数: function getDayNames($day, $shorten = false, $len = 1, $numeric = false) { $ret = ''; switch ( strtolower($day) ) { case 'sat': case 'saturday': $ret = 'شنبه'; $n = 1; break; case '
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);
}
我想知道是否有更好的方法重写这个。使用开关
并不理想
提前感谢。可能会安排:
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);
}
设置一些哈希字典(即PHP数组),以英语字符串作为键,以波斯语字符串作为值。我将使用哈希表(即关联数组)作为静态变量,并根据输入的前三个字母查找值。但是这样做实际上没有什么好处,这肯定不是一个有意义的性能差异,所以您应该使用最可读的版本。但是
substr()
不太可能是您想要的-在PHP中,字符串是一个字节序列,您几乎肯定会将字符一分为二。改为使用mb_substr()
。@mvw问题是我有两个要转换的键,我不想设置两个具有相同值的哈希字典。”“sat”和“saturday”应该指向相同的值。我想看看在这种情况下是否可以使用“通过引用分配”。这个函数做的太多了,为什么不使用3个单独的函数呢?谢谢,但是数字值是星期几呢?如果匹配的项是“sat”等,我应该如何返回“1”。这里有一个语法错误:if(array\u key\u exists($key,$days)
,但就是它。谢谢:)