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

2025-05-29 0 33

本文实例讲述了php实现阿拉伯数字罗马数字相互转换的方法。分享给大家供大家参考。具体如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63
<?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程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php实现阿拉伯数字和罗马数字相互转换的方法 https://www.kuaiidc.com/101963.html

相关文章

发表评论
暂无评论