về cơ bản tôi đang cố gắng tạo một hàm sẽ biến số La Mã thành một số nguyên.Số La Mã đến hàm số nguyên
Tôi có một mảng:
$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
];
Tôi khá mới để PHP vì vậy tôi vẫn quen với cách nghĩ vì vậy hãy ghi nhớ tôi vẫn đang học :)
đây là chức năng của tôi - hoặc những gì tôi có cho đến nay:
//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;
}
tôi đã được lúc này trong nhiều giờ và sẽ giống như nhìn thấy ánh sáng của nó, lời khuyên nào sẽ được đánh giá rất nhiều.
khi tôi chạy nó trong dòng lệnh với
echo romanToInteger('I');
tôi chỉ có được trả lại 0 và tôi nghĩ rằng một cái gì đó để làm với intval của tôi?
Xin lỗi một lần nữa vì đã trở thành một noob, giúp đánh giá cao dù hoặc bất kỳ gợi ý nào! :)
Cảm ơn! Không quá chắc chắn lý do tại sao tôi nghĩ đến việc có nó ở đó bây giờ ... cảm ơn một lần nữa tôi hiểu nó ngay bây giờ :) –
@CalvinTaylor chắc chắn vui vì điều này đã giúp – Ghost
@Ghost 'romanToInteger ('IV');' kết quả đầu ra 10 trong dán codepad cập nhật của bạn . Đó là 4. Trong phương thức Roman, 'I' được trừ từ' V' nếu giá trị đầu tiên thấp hơn giá trị tiếp theo. Trái ngược với 'VI' sẽ là 6. –