PHP将整数数字转换为罗马数字实例分享


Posted in PHP onMarch 17, 2019

方法一:自定义函数

我们可以自己手动编写一个函数来实现此功能,这个函数可以将数字作为第一个参数,将其转换为罗马并返回。

注:大多数算法只能在1-4999的范围内工作,如果使用特大数,脚本将失败。

实现代码:

<?php

header("content-type:text/html;charset=utf-8");

//将数字转换为罗马表示形式

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; 

} 

echo '整数数字转换为罗马数字:<br><br>';

// VIII

echo '数字8:'.numberToRoman(8).'<br>';

// CXXIII

echo '数字123:'.numberToRoman(123).'<br>';

// MMCCCLV

echo '数字2355:'.numberToRoman(2355).'<br>';

// MMMMCMXCIX

echo '数字4999:'.numberToRoman(4999).'<br>';

?>

输出:

PHP将整数数字转换为罗马数字实例分享

方法二:使用Romans库

Romans库是一个非常简单的PHP罗马数字库,允许您将整数转换为其罗马表示,反之亦然。

注:如果没有该库,请先需要安装;安装好Romans库后,就能够使用其命名空间并使用可帮助转换数字的函数。

Romans库包含一对简单的过滤器,用于将具有罗马数字的字符串转换为表示输入为十进制的int,将十进制int转换为具有罗马数字作为结果的字符串。

1、整数转换为罗马数字

要将整数转换为罗马表示,需要使用IntToRoman类,创建一个实例并从中调用filter方法。此方法将数字作为第一个参数,并返回带有罗马数字的字符串:

<?php

use Romans\Filter\IntToRoman;

 

$filter = new IntToRoman();

$result = $filter->filter(1999);

echo $result;

?>

输出:

MCMXCIX

2、罗马数字转换为整数

要将罗马数字转换为整数表示,需要使用RomanToInt类,创建一个实例并从中调用filter方法。此方法将使用罗马数字的字符串作为第一个参数,并返回一个带数值的整数:

<?php

use Romans\Filter\RomanToInt;

 

$filter = new RomanToInt();

$result = $filter->filter('MCMXCIX');

echo $result;

?>

输出:

1999

PHP 相关文章推荐
php 时间计算问题小结
Jan 04 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
Jun 21 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
PHP实现的简单日历类
Nov 29 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php查询及多条件查询
Feb 26 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
PHP标准库(PHP SPL)详解
Mar 16 #PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 #PHP
php生成word并下载代码实例
Mar 15 #PHP
PHP-FPM的配置与优化讲解
Mar 15 #PHP
php-fpm中max_children的配置
Mar 15 #PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 #PHP
php根据命令行参数生成配置文件详解
Mar 15 #PHP
You might like
PHP.MVC的模板标签系统(二)
2006/09/05 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
PHP函数积累总结
2019/03/19 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
js获取url传值的方法
2015/12/18 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
Python基础学习之时间转换函数用法详解
2019/06/18 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
计算机大学生的自我评价
2013/10/15 职场文书
公司财务自我评价分享
2013/12/17 职场文书
安全横幅标语
2014/06/09 职场文书
服务宗旨标语
2014/07/01 职场文书
合作协议书格式
2014/08/19 职场文书
公司行政管理制度范本
2015/08/05 职场文书