≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP 将数字转为罗马字符的简单示例

人气:654 时间:2018-09-23

这篇文章主要为大家详细介绍了PHP 将数字转为罗马字符的简单示例,具有一定的参考价值,可以用来参考一下。

对PHP将数字转换为罗马字符感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

/**
 * PHP将数字转换为罗马字符
 *
 * @param 
 * @arrange 512-笔记网: q1010.com
 **/
function dec2roman ($number) {
	# Making input compatible with script.
	$number = floor($number);
	if($number < 0) {
	$linje = "-";
	$number = abs($number);
	}
	# Defining arrays
	$romanNumbers = array(1000, 500, 100, 50, 10, 5, 1);
	$romanLettersToNumbers = array("M" => 1000, "D" => 500, "C" => 100, "L" => 50, "X" => 10, "V" => 5, "I" => 1);
	$romanLetters = array_keys($romanLettersToNumbers);
	# Looping through and adding letters.
	while ($number) {
	for($pos = 0; $pos <= 6; $pos++) {
	# Dividing the remaining number with one of the roman numbers.
	$dividend = $number / $romanNumbers[$pos];
	# If that division is >= 1, round down, and add that number of letters to the string.
	if($dividend >= 1) {
	$linje .= str_repeat($romanLetters[$pos], floor($dividend));
	# Reduce the number to reflect what is left to make roman of.
	$number -= floor($dividend) * $romanNumbers[$pos];
	}
	}
	}
	# If I find 4 instances of the same letter, this should be done in a different way.
	# Then, subtract instead of adding (smaller number in front of larger).
	$numberOfChanges = 1;
	while($numberOfChanges) {
	$numberOfChanges = 0;
	for($start = 0; $start < strlen($linje); $start++) {
	$chunk = substr($linje, $start, 1);
	if($chunk == $oldChunk && $chunk != "M") {
	$appearance++;
	} else {
	$oldChunk = $chunk;
	$appearance = 1;
	}
	# Was there found 4 instances.
	if($appearance == 4) {
	$firstLetter = substr($linje, $start - 4, 1);
	$letter = $chunk;
	$sum = $firstNumber + $letterNumber * 4;
	$pos = array_search($letter, $romanLetters);
	# Are the four digits to be calculated together with the one before? (Example yes: VIIII = IX Example no: MIIII = MIV
	# This is found by checking if the digit before the first of the four instances is the one which is before the digits in the order
	# of the roman number. I.e. MDCLXVI.
	if($romanLetters[$pos - 1] == $firstLetter) {
	$oldString = $firstLetter . str_repeat($letter, 4);
	$newString = $letter . $romanLetters[$pos - 2];
	} else {
	$oldString = str_repeat($letter, 4);
	$newString = $letter . $romanLetters[$pos - 1];
	}
	$numberOfChanges++;
	$linje = str_replace($oldString, $newString, $linje);
	}
	}
	}
	return $linje;
}
function roman2dec ($linje) {
	# Fixing variable so it follows my convention
	$linje = strtoupper($linje);
	# Removing all not-roman letters
	$linje = ereg_replace("[^IVXLCDM]", "", $linje);
	print("\$linje = $linje<br>");
	# Defining variables
	$romanLettersToNumbers = array("M" => 1000, "D" => 500, "C" => 100, "L" => 50, "X" => 10, "V" => 5, "I" => 1);
	$oldChunk = 1001;
	# Looping through line
	for($start = 0; $start < strlen($linje); $start++) {
	$chunk = substr($linje, $start, 1);
	$chunk = $romanLettersToNumbers[$chunk];
	if($chunk <= $oldChunk) {
	$calculation .= " + $chunk";
	} else {
	$calculation .= " + " . ($chunk - (2 * $oldChunk));
	}
	$oldChunk = $chunk;
	}
	# Summing it up
	eval("\$calculation = $calculation;");
	return $calculation;
}
# Implementation of the array_search function. Works only with numerical arrays.
function array_search($searchString, $array) {
	foreach ($array as $content) {
	if($content == $searchString) {
	return $pos;
	}
	$pos++;
	}
}
/***   来自四海网(www.q1010.com)   ***/

本文来自:http://www.q1010.com/173/1130-0.html

注:关于PHP 将数字转为罗马字符的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:罗马字符

您可能感兴趣的文章

上一篇:程序员工程师文化
下一篇:php 检查字符串是否从某个字符开始的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。