Имена персидских дней отличаются от английского, а также начинается неделя в субботу. Так что у меня это название дня недели и функция преобразования номера:Есть ли лучший способ написать эту функцию преобразования имен в php?
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);
}
, и я хочу знать, если есть лучший способ переписать. Использование switch
не является идеальным.
Заранее спасибо.
Установите некоторый хэш-словарь (т.е. PHP массив) с английскими строками в качестве ключей и фарси из них в качестве значений. – mvw
Я бы использовал хэш-таблицу (т. Е. Ассоциативный массив) как статическую переменную и искал значения на основе первых трех букв на входе. Но от этого практически ничего не получается, это, безусловно, не значимая разница в производительности, поэтому вы должны использовать наиболее читаемую версию. Но этот 'substr()' is * high * вряд ли будет тем, что вы хотите - в PHP строка представляет собой последовательность байтов, и вы почти наверняка сокращаете символы пополам. Вместо этого используйте 'mb_substr()'. – DaveRandom
@mvw Проблема в том, что у меня есть два ключа, которые я хочу преобразовать, и я не хочу создавать два хеш-словаря с одинаковыми значениями. «sat» и «saturday» должны указывать на то же значение. – Sallar