Для оформления своего проекта может понадобиться вывод информации (например, года) римскими цифрами.
Конечно, можно каждый год переписывать дату вручную, но зачем, если можно применить небольшую функцию.
Время обработки - 0.0223 | 4 484 305 шт/сек | CMXCIX
Автор функции Chushkin
По данным Википедии, некоторые из цифр (I, X, C, M) могут повторяться, но не более трёх раз подряд.
Таким образом, с их помощью можно записать любое целое число не более 3999 (MMMCMXCIX).
Если число больше 3999 - выводится ***.
Для PHP7.0
Для PHP5.3
Разница между версиями - только в краткой записи тернарного оператора ?? или ?:
Если не поддерживается краткая запись массивов, можно переписать в стандартном виде: $array = array(1, 2, 3, 4, 5);
Применение:
Конечно, можно каждый год переписывать дату вручную, но зачем, если можно применить небольшую функцию.
Время обработки - 0.0223 | 4 484 305 шт/сек | CMXCIX
Автор функции Chushkin
По данным Википедии, некоторые из цифр (I, X, C, M) могут повторяться, но не более трёх раз подряд.
Таким образом, с их помощью можно записать любое целое число не более 3999 (MMMCMXCIX).
Если число больше 3999 - выводится ***.
Для PHP7.0
PHP:
function int2roman($n, $prefix='***') {
$M = ['','M','MM','MMM'];
$C = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'];
$X = ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'];
$I = ['','I','II','III','IV','V','VI','VII','VIII','IX'];
return ($n > 3999 ? $prefix : '') . ($M[($n % 10000)/1000] ?? '') . $C[($n % 1000)/100] . $X[($n % 100)/10] . $I[($n % 10)];
}
Для PHP5.3
PHP:
function int2roman($n, $prefix='***') {
$M = ['','M','MM','MMM'];
$C = ['','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'];
$X = ['','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'];
$I = ['','I','II','III','IV','V','VI','VII','VIII','IX'];
return ($n > 3999 ? $prefix : '') . ($M[($n % 10000)/1000] ?: '') . $C[($n % 1000)/100] . $X[($n % 100)/10] . $I[($n % 10)];
}
Если не поддерживается краткая запись массивов, можно переписать в стандартном виде: $array = array(1, 2, 3, 4, 5);
Применение:
PHP:
int2roman($years)