如何修复我的Php函数,将数字转换为单词,输出从11到19的10-1而不是11?
我在把单词从11输出到19时遇到了一个问题,它不是从11输出10个1,而是从12输出10个2,依此类推到19,但是在小数中,它正确地输出10到19 PHP最新版本,Web服务器如何修复我的Php函数,将数字转换为单词,输出从11到19的10-1而不是11?,php,currency,Php,Currency,我在把单词从11输出到19时遇到了一个问题,它不是从11输出10个1,而是从12输出10个2,依此类推到19,但是在小数中,它正确地输出10到19 PHP最新版本,Web服务器 <?php function toWords($num) { $ones = array( 0 => "Zero", 1 => "One", 2 => "Two", 3 => "Three", 4 => "Four", 5 =>
<?php
function toWords($num) {
$ones = array(
0 => "Zero",
1 => "One",
2 => "Two",
3 => "Three",
4 => "Four",
5 => "Five",
6 => "Six",
7 => "Seven",
8 => "Eight",
9 => "Nine",
10 => "Ten",
11 => "Eleven",
12 => "Twelve",
13 => "Thirteen",
14 => "Fourteen",
15 => "Fifteen",
16 => "Sixteen",
17 => "Seventeen",
18 => "Eighteen",
19 => "Nineteen",
"014" => "Fourteen"
);
$tens = array(
0 => "Zero",
1 => "Ten",
2 => "Twenty",
3 => "Thirty",
4 => "Forty",
5 => "Fifty",
6 => "Sixty",
7 => "Seventy",
8 => "Eighty",
9 => "Ninety"
);
$hundreds = array(
"Hundred",
"Thousand",
"Million",
"Billion",
"Trillion",
"Quadrillion"
); /*limit t quadrillion */
$num = number_format($num, 2, ".", ",");
$num_arr = explode(".", $num);
$wholenum = $num_arr[0];
$decnum = $num_arr[1];
$whole_arr = array_reverse(explode(",", $wholenum));
krsort($whole_arr, 1);
$rettxt = "";
foreach ($whole_arr as $key => $i) {
while (substr($i, 0, 1) == "0")
$i = substr($i, 1, 5);
if ($i < 20) {
/* echo "getting:".$i; */
$rettxt .= $ones[$i];
} elseif ($i < 100) {
if (substr($i, 0, 1) != "0") $rettxt .= $tens[substr($i, 0, 1)];
if (substr($i, 1, 1) != "0") $rettxt .= " ".$ones[substr($i, 1, 1)];
} else {
if (substr($i, 0, 1) != "0") $rettxt .= $ones[substr($i, 0, 1)]." ".$hundreds[0];
if (substr($i, 1, 1) != "0")$rettxt .= " ".$tens[substr($i, 1, 1)];
if (substr($i, 2, 1) != "0")$rettxt .= " ".$ones[substr($i, 2, 1)];
}
if ($key > 0) {
$rettxt .= " ".$hundreds[$key]." ";
}
} $rettxt = $rettxt." Pesos";
if ($decnum > 0) {
$rettxt .= " and ";
if ($decnum < 20) {
$rettxt .= $ones[$decnum];
} elseif ($decnum < 100) {
$rettxt .= $tens[substr($decnum, 0, 1)];
$rettxt .= " ".$ones[substr($decnum, 1, 1)];
}
$rettxt = $rettxt." Centavos";
}
return $rettxt;
}
?>
输出是10到2而不是12(11到19)
但在十进制中,它正确地输出单词
十一比十九
四千二百比索(p 4212.00),
一千九百比索和十八比索(1917.18页)。。。
我在这个网站上找到了这个代码:
回显单词(11)代码>为我回音十一比索
@second2一个尝试回音数百个单词(111);它输出一百一十一个Pesostry这个你需要按正确的顺序做事情-首先检查特殊情况(十一,十二,…),只有当你没有遇到其中一个值时,你才能继续“正常”的工作。@04FS我刚从网站上复制了代码,你知道错误发生在哪里,代码的哪一部分吗?echo toWords(11)代码>为我回音十一比索
@second2一个尝试回音数百个单词(111);它输出一百一十一个Pesostry这个你需要按正确的顺序做事情-首先检查特殊情况(十一,十二,…),只有当你没有遇到其中一个值时,你才能继续“正常”的工作。@04FS我刚从网站上复制了代码,你知道错误发生在哪里,代码的哪一部分吗?十五万点五-150000.50结果十五万点五-150000预期十五万点五-150000.50结果十五万点五-150000预期
<?php
$number = '11545';
$locale = 'en_US';
$format = numfmt_create($locale, NumberFormatter::SPELLOUT);
$in_words = numfmt_format($format, $number);
print_r($in_words);
// eleven thousand five hundred forty-five
?>