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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
PHP 面向对象 final类与final方法
May 05 PHP
服务器web工具 php环境下
Dec 29 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 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
咖啡常见的种类
2021/03/03 新手入门
几个php应用技巧
2008/03/27 PHP
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
PHP网站备份程序代码分享
2011/06/10 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
澳大利亚最受欢迎的美发和美容在线商店:Catwalk
2018/12/12 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
保护母亲河倡议书
2014/04/14 职场文书
服务整改报告
2014/11/06 职场文书
高三复习计划
2015/01/19 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
三下乡个人总结
2015/03/04 职场文书
村主任当选感言
2015/08/01 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
vue使用echarts实现折线图
2022/03/21 Vue.js
Java无向树分析 实现最小高度树
2022/04/09 Javascript
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js