本文概述
- A.使用一个函数
- B.使用库
【如何在PHP中将整数转换为罗马数字】在本文中, 我们将向你展示如何将数字值转换为其罗马形式, 反之亦然(如果你使用的是库)。
A.使用一个函数如果你无法使用库, 或者只是想保持简单, 则将以下函数添加到集合中。此函数将你的数字(第一个参数)转换为其罗马表示形式:
注意大多数算法只能在1-4999的范围内工作, 因此使用较大的数字, 脚本将失败。
<
?php/**
* Converts a number to its roman presentation.
**/
function numberToRoman($num)
{
// Be sure to convert the given parameter into an integer
$n = intval($num);
$result = '';
// Declare a lookup array that we will use to traverse the number:
$lookup = array(
'M' =>
1000, 'CM' =>
900, 'D' =>
500, 'CD' =>
400, 'C' =>
100, 'XC' =>
90, 'L' =>
50, 'XL' =>
40, 'X' =>
10, 'IX' =>
9, 'V' =>
5, 'IV' =>
4, 'I' =>
1
);
foreach ($lookup as $roman =>
$value)
{
// Look for number of matches
$matches = intval($n / $value);
// Concatenate characters
$result .= str_repeat($roman, $matches);
// Substract that from the number
$n = $n % $value;
} return $result;
}
通过在你的项目中简单地包含此函数, 你将可以按以下方式使用它:
<
?php// VIII
echo numberToRoman(8);
// CXXIII
echo numberToRoman(123);
// MMCCCLV
echo numberToRoman(2355);
// MMMMCMXCIX
echo numberToRoman(4999);
而且我们不需要为此类函数包括一个库。
B.使用库如果要使用库而不是编写自己的函数, 建议你使用Romans库, 这是一个非常简单的PHP Roman Numerals库, 可用于将整数转换为其罗马表示形式, 反之亦然。安装库的首选方法是使用composer, 因此你可以运行以下命令
composer require wandersonwhcr/romans
安装库之后, 你将能够使用其名称空间并使用可帮助你转换数字的函数。有关此库的更多信息, 请访问Github上的官方存储库。
该库包含几个简单的过滤器, 用于将具有罗马数字的字符串转换为将输入表示为十进制的int, 并将十进制int转换为具有罗马数字的字符串作为结果。
罗马数字
要将整数转换为罗马表示形式, 请使用IntToRoman类, 创建一个实例并从中调用filter方法。此方法将数字作为第一个参数, 并返回包含罗马数字的字符串:
use Romans\Filter\IntToRoman;
$filter = new IntToRoman();
$result = $filter->
filter(1999);
// MCMXCIX
echo $result;
罗马数字
要将罗马数字转换为其数字表示形式, 请使用RomanToInt类, 创建一个实例并从中调用filter方法。此方法将带有罗马数字的字符串作为第一个参数, 并返回带有数字值的整数:
use Romans\Filter\RomanToInt;
$filter = new RomanToInt();
$result = $filter->
filter('MCMXCIX');
// 1999
echo $result;
编码愉快!
推荐阅读
- 如何使用C#在WinForms中打开Windows的管理工具目录
- 为什么键入的C++有所不同以及为什么如此
- 毕业设计|SpringMVC+Vue项目疫情社区管理系统
- 毕业设计|SpringMVC+Vue项目网上办公自动化系统
- 课程设计|SpringMVC+Vue项目智慧社区管理系统
- 课程设计|SpringMVC+vue实现前后端分离的药品管理系统
- 使用firebase云消息使用android客户端应用程序生成通知
- android在后台处理大图片firebase通知
- android推送通知服务比较