罗马数字转整数函数
Roman Numeral to integer function
基本上我正在尝试创建一个将罗马数字转换为整数的函数。
我有一个数组:
$roman_numerals=[
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1
];
我是 PHP 的新手,所以我还在适应思维方式,所以请记住我还在学习:)
这是我的功能 - 或者我目前拥有的功能:
//Array
function romanToInteger($key)
{
$roman_numerals=[
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1
];
$roman = intval($key);
$result = 0;
foreach ($roman_numerals as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
var_dump($roman); //test
echo $result;
}
我已经在这几个小时了,只是想看看它,任何建议将不胜感激。
当我运行它在命令行中用
echo romanToInteger('I');
我刚返回 0,我认为这与我的 intval 有关吗?
再次抱歉,我是菜鸟,但请多多指教或多多指教! :)
是的,它与 intval
有关。
您基本上是将罗马输入转换为整数,从而将其呈现为 0
。
删除:
function romanToInteger($key)
{
$romans = [
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1,
];
$roman = $key;
$result = 0;
foreach ($romans as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
echo $result;
}
romanToInteger('IV');
基本上我正在尝试创建一个将罗马数字转换为整数的函数。
我有一个数组:
$roman_numerals=[
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1
];
我是 PHP 的新手,所以我还在适应思维方式,所以请记住我还在学习:)
这是我的功能 - 或者我目前拥有的功能:
//Array
function romanToInteger($key)
{
$roman_numerals=[
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1
];
$roman = intval($key);
$result = 0;
foreach ($roman_numerals as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
var_dump($roman); //test
echo $result;
}
我已经在这几个小时了,只是想看看它,任何建议将不胜感激。
当我运行它在命令行中用
echo romanToInteger('I');
我刚返回 0,我认为这与我的 intval 有关吗?
再次抱歉,我是菜鸟,但请多多指教或多多指教! :)
是的,它与 intval
有关。
您基本上是将罗马输入转换为整数,从而将其呈现为 0
。
删除:
function romanToInteger($key)
{
$romans = [
'M' => 1000,
'CM' => 900,
'D' => 500,
'CD' => 400,
'C' => 100,
'XC' => 90,
'L' => 50,
'XL' => 40,
'X' => 10,
'IX' => 9,
'V' => 5,
'IV' => 4,
'I' => 1,
];
$roman = $key;
$result = 0;
foreach ($romans as $key => $value) {
while (strpos($roman, $key) === 0) {
$result += $value;
$roman = substr($roman, strlen($key));
}
}
echo $result;
}
romanToInteger('IV');