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 相关文章推荐
?算你??的 PHP 程式大小
Dec 06 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
php实现图片按比例截取的方法
Feb 06 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 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
十天学会php之第八天
2006/10/09 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
详解Javascript事件驱动编程
2016/01/03 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
JS原形与原型链深入详解
2020/05/09 Javascript
python中readline判断文件读取结束的方法
2014/11/08 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
django的settings中设置中文支持的实现
2019/04/28 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
python 实现图片裁剪小工具
2021/02/02 Python
英语文学专业学生的自我评价
2013/10/31 职场文书
房产买卖委托公证书
2014/04/04 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
体育部部长竞选稿
2015/11/21 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript