php实现阿拉伯数字和罗马数字相互转换的方法


Posted in PHP onApril 17, 2015

本文实例讲述了php实现阿拉伯数字和罗马数字相互转换的方法。分享给大家供大家参考。具体如下:

<?php
// Function that calculates the roman string to the given number:
function dec2roman($f)
{
 // Return false if either $f is not a real number, 
 //$f is bigger than 3999 or $f is lower or equal to 0:  
  if(!is_numeric($f) || $f > 3999 || $f <= 0) return false;
 // Define the roman figures:
  $roman = array(
  'M' => 1000,
  'D' => 500,
  'C' => 100,
  'L' => 50,
  'X' => 10,
  'V' => 5,
  'I' => 1
  );
 // Calculate the needed roman figures:
  foreach($roman as $k => $v)
  if(($amount[$k] = floor($f / $v)) > 0)
  $f -= $amount[$k] * $v;
 // Build the string:
  $return = '';
  foreach($amount as $k => $v)
  {
   $return .= $v <= 3 ? str_repeat($k, $v) : $k . $old_k;
   $old_k = $k;  
  }
 // Replace some spacial cases and return the string:
  return str_replace(array('VIV','LXL','DCD'),array('IX','XC','CM'),$return);
}
// echo dec2romen(1981);
// Function to get the decimal value of a roman string:
function roman2dec($str = '')
{
 // Return false if not at least one letter is in the string:
  if(is_numeric($str)) return false;
 // Define the roman figures:
  $roman = array(
  'M' => 1000,
  'D' => 500,
  'C' => 100,
  'L' => 50,
  'X' => 10,
  'V' => 5,
  'I' => 1
  );
 // Convert the string to an array of roman values:
  for($i = 0; $i < strlen($str); $i++) 
  if(isset($roman[strtoupper($str[$i])]))
  $values[] = $roman[strtoupper($str[$i])];
 // Calculate the sum of that array:
  $sum = 0;
  while($current = current($values))
  {
   $next = next($values);
   $next > $current ? $sum += $next - $current + 0 * next($values) : $sum += $current;
  }
 // Return the value:
  return $sum;
}
// echo roman2dec(IX);  
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
c#中的实现php中的preg_replace
Dec 21 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
php使用post数组的键值创建同名变量并赋值的方法
Apr 03 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP实现简易图形计算器
Aug 28 PHP
php实现根据词频生成tag云的方法
Apr 17 #PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 #PHP
php使用GD创建保持宽高比缩略图的方法
Apr 17 #PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 #PHP
php和editplus正则表达式去除空白行
Apr 17 #PHP
PHP生成唯一订单号的方法汇总
Apr 16 #PHP
微信access_token的获取开发示例
Apr 16 #PHP
You might like
PHPMyAdmin 快速配置方法
2009/05/11 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
初识PHP
2014/09/28 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
浅谈vue的props,data,computed变化对组件更新的影响
2018/01/16 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
联强国际笔试题面试题
2013/07/10 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
2013年保送生自荐信格式
2013/11/20 职场文书
大学生自我鉴定
2013/12/16 职场文书
公司中秋节活动方案
2014/02/12 职场文书
学校节能减排倡议书
2014/05/16 职场文书
爱与责任师德演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
九年级化学教学反思
2016/02/22 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js