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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
destoon数据库表说明汇总
Jul 15 PHP
php多任务程序实例解析
Jul 19 PHP
PHP生成器简单实例
May 13 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
基于PHP技术开发客服工单系统
Jan 06 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP结合Ueditor并修改图片上传路径
Oct 16 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
PHP生成器简单实例
2015/05/13 PHP
php表单处理操作
2017/11/16 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
Javascript之BOM(window对象)详解
2016/05/25 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
2020/06/17 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
Python2包含中文报错的解决方法
2018/07/09 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
css3绘制天猫logo实现代码
2012/11/06 HTML / CSS
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
一份Java笔试题
2012/02/21 面试题
英语专业学生个人求职信范文
2014/01/06 职场文书
《吃水不忘挖井人》教学反思
2014/04/15 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
2014年施工员工作总结
2014/11/18 职场文书
2016年母亲节广告语
2016/01/28 职场文书
经销商会议开幕词
2016/03/04 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL
如何通过cmd 连接阿里云服务器
2022/04/18 Servers