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 16 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
php教程之phpize使用方法
Feb 12 PHP
php中rename函数用法分析
Nov 15 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
php读取本地json文件的实例
Mar 07 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
详解phpstorm2020最新破解方法
Sep 17 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 IE中下载附件问题解决方法
2014/01/07 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
javascript 特殊字符串
2009/02/25 Javascript
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
JS和jQuery通过this获取html标签中的属性值(实例代码)
2017/09/11 jQuery
Vue中的Props(不可变状态)
2018/09/29 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
Python定义函数实现累计求和操作
2020/05/03 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
高中数学教学反思
2014/01/30 职场文书
酒店开业策划方案
2014/06/02 职场文书
离婚协议书范本2014
2014/10/27 职场文书
行为习惯主题班会
2015/08/14 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android