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 VS ASP
Oct 09 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
php日志函数error_log用法实例分析
Sep 23 PHP
phpinfo的知识点总结
Oct 10 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
Array.prototype 的泛型应用分析
2010/04/30 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
python中通过预先编译正则表达式提高效率
2017/09/25 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Django 内置权限扩展案例详解
2019/03/04 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
2019/09/20 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
生日邀请函范文
2014/01/13 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
班长自荐书范文
2014/02/11 职场文书
暑期培训班招生方案
2014/08/26 职场文书
导游词之无锡梅园
2019/11/28 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python