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脚本的10个技巧(1)
Oct 09 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
Jan 06 PHP
php页面缓存方法小结
Jan 10 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
May 12 PHP
详细对比php中类继承和接口继承
Oct 11 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
php使用 readfile() 函数设置文件大小大小的方法
2017/08/11 PHP
php-msf源码详解
2017/12/25 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
通用JS事件写法实现代码
2009/01/07 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python中常见的异常总结
2018/02/20 Python
Python中函数参数调用方式分析
2018/08/09 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
基督教卡片、励志礼品、家居装饰等:DaySpring
2018/10/12 全球购物
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
介绍一下linux文件系统分配策略
2012/11/17 面试题
灵泰克Java笔试题
2016/01/09 面试题
幼儿园中班教学反思
2014/02/10 职场文书
书香校园建设方案
2014/05/02 职场文书
四风查摆剖析材料
2014/10/10 职场文书
《刷子李》教学反思
2016/02/20 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电