加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php实现阿拉伯数字和罗马数字相互转换的方式

发布时间:2023-04-10 12:44:39 所属栏目:PHP教程 来源:
导读:这篇文章主要介绍了php实现阿拉伯数字和罗马数字相互转换的方法,涉及php字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下,本文实例讲述了php实现阿拉伯数字和罗马数字相互转换的方法,分享给大家供大

这篇文章主要介绍了php实现阿拉伯数字和罗马数字相互转换的方法,涉及php字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下,本文实例讲述了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);   

?>

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!