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和ACCESS写聊天室(三)
Oct 09 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
May 13 PHP
PHP实现邮件群发的源码
Jun 18 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
python编写分类决策树的代码
2017/12/21 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
python中if及if-else如何使用
2020/06/02 Python
详解python datetime模块
2020/08/17 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
前台接待岗位职责
2013/12/03 职场文书
环保建议书300字
2014/05/14 职场文书
大学生求职信范文
2014/05/24 职场文书
人大调研汇报材料
2014/08/14 职场文书
2014年店长工作总结
2014/11/17 职场文书
儿子满月酒致辞
2015/07/29 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB