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投票程序源码
Mar 11 PHP
php下连接mssql2005的代码
Jan 17 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 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 - Html Transfer Code
2006/10/09 PHP
Access数据库导入Mysql的方法之一
2006/10/09 PHP
PHP 数组遍历顺序理解
2009/09/09 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php构造函数实例讲解
2013/11/13 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python计算最大优先级队列实例
2013/12/18 Python
python常规方法实现数组的全排列
2015/03/17 Python
Python 爬虫的工具列表大全
2016/01/31 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
pytorch构建多模型实例
2020/01/15 Python
QML实现钟表效果
2020/06/02 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
学生档案自我鉴定
2013/10/07 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
Python使用scapy模块发包收包
2021/05/07 Python