2013-10-10 30 views
3

我只需要一点帮助。因为我正在创建一个将小数转换为货币格式的代码。例如,如果如何使用PHP将十进制数转换为单词(金钱格式)?

我有这个数

'2143.45'

输出应为

'2143和45美分'

我发现了这样的代码bu我不知道如何包括美分。

<?php 

function convertNumber($number) 
{ 
    list($integer, $fraction) = explode(".", (string) $number); 

    $output = ""; 

    if ($integer{0} == "-") 
    { 
     $output = "negative "; 
     $integer = ltrim($integer, "-"); 
    } 
    else if ($integer{0} == "+") 
    { 
     $output = "positive "; 
     $integer = ltrim($integer, "+"); 
    } 

    if ($integer{0} == "0") 
    { 
     $output .= "zero"; 
    } 
    else 
    { 
     $integer = str_pad($integer, 36, "0", STR_PAD_LEFT); 
     $group = rtrim(chunk_split($integer, 3, " "), " "); 
     $groups = explode(" ", $group); 

     $groups2 = array(); 
     foreach ($groups as $g) 
     { 
      $groups2[] = convertThreeDigit($g{0}, $g{1}, $g{2}); 
     } 

     for ($z = 0; $z < count($groups2); $z++) 
     { 
      if ($groups2[$z] != "") 
      { 
       $output .= $groups2[$z] . convertGroup(11 - $z) . (
         $z < 11 
         && !array_search('', array_slice($groups2, $z + 1, -1)) 
         && $groups2[11] != '' 
         && $groups[11]{0} == '0' 
          ? " and " 
          : ", " 
        ); 
      } 
     } 

     $output = rtrim($output, ", "); 
    } 

    if ($fraction > 0) 
    { 
     $output .= " point"; 
     for ($i = 0; $i < strlen($fraction); $i++) 
     { 
      $output .= " " . convertDigit($fraction{$i}); 
     } 
    } 

    return $output; 
} 

function convertGroup($index) 
{ 
    switch ($index) 
    { 
     case 11: 
      return " decillion"; 
     case 10: 
      return " nonillion"; 
     case 9: 
      return " octillion"; 
     case 8: 
      return " septillion"; 
     case 7: 
      return " sextillion"; 
     case 6: 
      return " quintrillion"; 
     case 5: 
      return " quadrillion"; 
     case 4: 
      return " trillion"; 
     case 3: 
      return " billion"; 
     case 2: 
      return " million"; 
     case 1: 
      return " thousand"; 
     case 0: 
      return ""; 
    } 
} 

function convertThreeDigit($digit1, $digit2, $digit3) 
{ 
    $buffer = ""; 

    if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") 
    { 
     return ""; 
    } 

    if ($digit1 != "0") 
    { 
     $buffer .= convertDigit($digit1) . " hundred"; 
     if ($digit2 != "0" || $digit3 != "0") 
     { 
      $buffer .= " and "; 
     } 
    } 

    if ($digit2 != "0") 
    { 
     $buffer .= convertTwoDigit($digit2, $digit3); 
    } 
    else if ($digit3 != "0") 
    { 
     $buffer .= convertDigit($digit3); 
    } 

    return $buffer; 
} 

function convertTwoDigit($digit1, $digit2) 
{ 
    if ($digit2 == "0") 
    { 
     switch ($digit1) 
     { 
      case "1": 
       return "ten"; 
      case "2": 
       return "twenty"; 
      case "3": 
       return "thirty"; 
      case "4": 
       return "forty"; 
      case "5": 
       return "fifty"; 
      case "6": 
       return "sixty"; 
      case "7": 
       return "seventy"; 
      case "8": 
       return "eighty"; 
      case "9": 
       return "ninety"; 
     } 
    } else if ($digit1 == "1") 
    { 
     switch ($digit2) 
     { 
      case "1": 
       return "eleven"; 
      case "2": 
       return "twelve"; 
      case "3": 
       return "thirteen"; 
      case "4": 
       return "fourteen"; 
      case "5": 
       return "fifteen"; 
      case "6": 
       return "sixteen"; 
      case "7": 
       return "seventeen"; 
      case "8": 
       return "eighteen"; 
      case "9": 
       return "nineteen"; 
     } 
    } else 
    { 
     $temp = convertDigit($digit2); 
     switch ($digit1) 
     { 
      case "2": 
       return "twenty-$temp"; 
      case "3": 
       return "thirty-$temp"; 
      case "4": 
       return "forty-$temp"; 
      case "5": 
       return "fifty-$temp"; 
      case "6": 
       return "sixty-$temp"; 
      case "7": 
       return "seventy-$temp"; 
      case "8": 
       return "eighty-$temp"; 
      case "9": 
       return "ninety-$temp"; 
     } 
    } 
} 

function convertDigit($digit) 
{ 
    switch ($digit) 
    { 
     case "0": 
      return "zero"; 
     case "1": 
      return "one"; 
     case "2": 
      return "two"; 
     case "3": 
      return "three"; 
     case "4": 
      return "four"; 
     case "5": 
      return "five"; 
     case "6": 
      return "six"; 
     case "7": 
      return "seven"; 
     case "8": 
      return "eight"; 
     case "9": 
      return "nine"; 
    } 
} 

$num = 500254.89; 
$test = convertNumber($num); 

echo $test; 

?> 
+0

可能重复http://stackoverflow.com/questions/3181945/convert-money-to-text-in -php – SBerg413

+0

看到下面的答案 [看到这个答案为印度格式] [1] [1]:http://stackoverflow.com/a/25967687/1931001 –

+0

看到这个下面的链接[印度货币格式中使用PHP话] [1] [1]:HTTP ://stackoverflow.com/a/25967687/1931001 –

回答

1

想要编辑这个功能,你可以这样做的一种快速和肮脏的方式是通过黑客打印单词的部分,如下所示:http://pastebin.com/UwSR8NpV它应该和我rk就像你想要的那样。

1

您使用的功能很好。

对于

2143.45 

我想输出应该是:

two thousand one hundred forty three and four five cents 

而不是:

two thousand one hundred forty three and forty five cents 

但是,如果你想这样的说法,你仍然可以使用你正在使用的功能。
绝对是一种更长的实现方式! :

$testNumber = '2143.45'; 

$tempNum = explode('.' , $testNumber); 

$convertedNumber = (isset($tempNum[0]) ? convertNumber($tempNum[0]) : ''); 

// Use the below line if you don't want 'and' in the number before decimal point 
$convertedNumber = str_replace(' and ' ,' ' ,$convertedNumber); 

// In the below line if you want you can replace ' and ' with ' , ' 
$convertedNumber .= ((isset($tempNum[0]) and isset($tempNum[1])) ? ' and ' : ''); 

$convertedNumber .= (isset($tempNum[1]) ? convertNumber($tempNum[1]) .' cents' : ''); 

echo $convertedNumber; 

显示:

二千143和45美分

您也可以将上面的代码行到你的converNumber功能的地方正在翻译派系部分if ($fraction > 0){ }

+0

好的谢谢。寻求帮助。 :) – Jerielle

1
<?php function numtowords($num){ 
$decones = array( 
      '01' => "One", 
      '02' => "Two", 
      '03' => "Three", 
      '04' => "Four", 
      '05' => "Five", 
      '06' => "Six", 
      '07' => "Seven", 
      '08' => "Eight", 
      '09' => "Nine", 
      10 => "Ten", 
      11 => "Eleven", 
      12 => "Twelve", 
      13 => "Thirteen", 
      14 => "Fourteen", 
      15 => "Fifteen", 
      16 => "Sixteen", 
      17 => "Seventeen", 
      18 => "Eighteen", 
      19 => "Nineteen" 
      ); 
$ones = array( 
      0 => " ", 
      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" 
      ); 
$tens = array( 
      0 => "", 
      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); 
$rettxt = ""; 
foreach($whole_arr as $key => $i){ 
    if($i < 20){ 
     $rettxt .= $ones[$i]; 
    } 
    elseif($i < 100){ 
     $rettxt .= $tens[substr($i,0,1)]; 
     $rettxt .= " ".$ones[substr($i,1,1)]; 
    } 
    else{ 
     $rettxt .= $ones[substr($i,0,1)]." ".$hundreds[0]; 
     $rettxt .= " ".$tens[substr($i,1,1)]; 
     $rettxt .= " ".$ones[substr($i,2,1)]; 
    } 
    if($key > 0){ 
     $rettxt .= " ".$hundreds[$key]." "; 
    } 

} 
$rettxt = $rettxt." peso/s"; 

if($decnum > 0){ 
    $rettxt .= " and "; 
    if($decnum < 20){ 
     $rettxt .= $decones[$decnum]; 
    } 
    elseif($decnum < 100){ 
     $rettxt .= $tens[substr($decnum,0,1)]; 
     $rettxt .= " ".$ones[substr($decnum,1,1)]; 
    } 
    $rettxt = $rettxt." centavo/s"; 
} 
return $rettxt;} ?> 

您可以通过

echo numtowords(156.50); 

输出使用,这是

One Hundred Fifty Six peso/s and Fifty centavo/s only. 

信用店主:亚历克斯Culango PS:我已经编辑了一些行,因为它有一些错误时,几十有“0”,也适用于正确的十进制转换为单词以及比索和分位置。

+0

答案是不正确的十万或核心。 –

1

印度版

function convert_number_to_words($number) { 

    $hyphen  = '-'; 
    $conjunction = ' and '; 
    $separator = ', '; 
    $negative = 'negative '; 
    $decimal  = ' point '; 
    $dictionary = 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', 
     20     => 'twenty', 
     30     => 'thirty', 
     40     => 'fourty', 
     50     => 'fifty', 
     60     => 'sixty', 
     70     => 'seventy', 
     80     => 'eighty', 
     90     => 'ninety', 
     100     => 'hundred', 
     1000    => 'thousand', 
     100000    => 'lakh', 
     10000000   => 'crore' 
    ); 

    if (!is_numeric($number)) { 
     return false; 
    } 

    if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) { 
     // overflow 
     trigger_error(
      'convert_number_to_words only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX, 
      E_USER_WARNING 
     ); 
     return false; 
    } 

    if ($number < 0) { 
     return $negative . $this->convert_number_to_words(abs($number)); 
    } 

    $string = $fraction = null; 

    if (strpos($number, '.') !== false) { 
     list($number, $fraction) = explode('.', $number); 
    } 

    switch (true) { 
     case $number < 21: 
      $string = $dictionary[$number]; 
      break; 
     case $number < 100: 
      $tens = ((int) ($number/10)) * 10; 
      $units = $number % 10; 
      $string = $dictionary[$tens]; 
      if ($units) { 
       $string .= $hyphen . $dictionary[$units]; 
      } 
      break; 
     case $number < 1000: 
      $hundreds = $number/100; 
      $remainder = $number % 100; 
      $string = $dictionary[$hundreds] . ' ' . $dictionary[100]; 
      if ($remainder) { 
       $string .= $conjunction . $this->convert_number_to_words($remainder); 
      } 
      break; 
     case $number < 100000: 
      $thousands = ((int) ($number/1000)); 
      $remainder = $number % 1000; 

      $thousands = $this->convert_number_to_words($thousands); 

      $string .= $thousands . ' ' . $dictionary[1000]; 
      if ($remainder) { 
       $string .= $separator . $this->convert_number_to_words($remainder); 
      } 
      break; 
     case $number < 10000000: 
      $lakhs = ((int) ($number/100000)); 
      $remainder = $number % 100000; 

      $lakhs = $this->convert_number_to_words($lakhs); 

      $string = $lakhs . ' ' . $dictionary[100000]; 
      if ($remainder) { 
       $string .= $separator . $this->convert_number_to_words($remainder); 
      } 
      break; 
     case $number < 1000000000: 
      $crores = ((int) ($number/10000000)); 
      $remainder = $number % 10000000; 

      $crores = $this->convert_number_to_words($crores); 

      $string = $crores . ' ' . $dictionary[10000000]; 
      if ($remainder) { 
       $string .= $separator . $this->convert_number_to_words($remainder); 
      } 
      break; 
     default: 
      $baseUnit = pow(1000, floor(log($number, 1000))); 
      $numBaseUnits = (int) ($number/$baseUnit); 
      $remainder = $number % $baseUnit; 
      $string = $this->convert_number_to_words($numBaseUnits) . ' ' . $dictionary[$baseUnit]; 
      if ($remainder) { 
       $string .= $remainder < 100 ? $conjunction : $separator; 
       $string .= $this->convert_number_to_words($remainder); 
      } 
      break; 
    } 

    if (null !== $fraction && is_numeric($fraction)) { 
     $string .= $decimal; 
     $words = array(); 
     foreach (str_split((string) $fraction) as $number) { 
      $words[] = $dictionary[$number]; 
     } 
     $string .= implode(' ', $words); 
    } 

    return $string; 
} 
1
For Indian Currnecy 
For Indian Currency 
<html> 
<head> 
<title> Number to word converter</title> 
</head> 
<body> 
<?php 
$ones =array('',' One',' Two',' Three',' Four',' Five',' Six',' Seven',' Eight',' Nine',' Ten',' Eleven',' Twelve',' Thirteen',' Fourteen',' Fifteen',' Sixteen',' Seventeen',' Eighteen',' Nineteen'); 
$tens = array('','',' Twenty',' Thirty',' Fourty',' Fifty',' Sixty',' Seventy',' Eighty',' Ninety',); 
$triplets = array('',' Thousand',' Lac',' Crore',' Arab',' Kharab'); 


function Show_Amount_In_Words($num) { 
    global $ones, $tens, $triplets; 
$str =""; 


//$num =(int)$num; 
$th= (int)($num/1000); 
$x = (int)($num/100) %10; 
$fo= explode('.',$num); 

if($fo[0] !=null){ 
$y=(int) substr($fo[0],-2); 

}else{ 
    $y=0; 
} 

if($x > 0){ 
    $str =$ones[$x].' Hundred'; 

} 
if($y>0){ 
if($y<20) 
{ 
$str .=$ones[$y]; 

} 
else { 
    $str .=$tens[($y/10)].$ones[($y%10)]; 
    } 
} 
$tri=1; 
while($th!=0){ 

    $lk = $th%100; 
    $th = (int)($th/100); 
    $count =$tri; 

    if($lk<20){ 
     if($lk == 0){ 
     $tri =0;} 
     $str = $ones[$lk].$triplets[$tri].$str; 
     $tri=$count; 
     $tri++; 
    }else{ 
     $str = $tens[$lk/10].$ones[$lk%10].$triplets[$tri].$str; 
     $tri++; 
    } 
} 
$num =(float)$num; 
if(is_float($num)){ 
    $fo= (String) $num; 
     $fo= explode('.',$fo); 
     $fo1= @$fo[1]; 

}else{ 
    $fo1 =0; 
} 
$check = (int) $num; 
if($check !=0){ 
      return $str.' Rupees'.forDecimal($fo1); 
    }else{ 
     return forDecimal($fo1); 
    } 
}//End function Show_Amount_In_Words 

if(isset($_POST['num'])){ 
    $num = $_POST['num']; 
echo Show_Amount_In_Words($num); 
} 



//function for decimal parts 
function forDecimal($num){ 
    global $ones,$tens; 
    $str=""; 
    $len = strlen($num); 
    if($len==1){ 
     $num=$num*10; 
    } 
    $x= $num%100; 
    if($x>0){ 
    if($x<20){ 
     $str = $ones[$x].' Paise'; 
    }else{ 
     $str = $tens[$x/10].$ones[$x%10].' Paise'; 
    } 
    } 
    return $str; 
} 
?> 
<form action='#' method='post'> 
<input type='text' name='num' size='20'> 
<input type='submit' name='submit' /> 
</form> 
</body> 
</html> 
+1

请提供一些解释。不只是代码。 – Nitish

+0

此代码为(印度货币)金额转换为Word。在这个程序中,我做了两个函数之一的整数值和另一个浮点值。但是这里只需要调用一个函数(Show_Amount_In_Words)。 – Deependra

-1

货币格式这个问题(印度 - 卢比)(高达13位工作)

这里我把数字转换成word格式(货币)

例如:如果你输入1011,那么你会得到答案:一千十一卢比

使用字符串数组功能和控制结构(IF)

// Ex: num = 1250.75 

    <?php 
    if (isset($_POST["num"])) { 

     // Getting number before(".") 
     $num = $_POST["num"]; // $num = 1250.75 
     $num_length = strcspn($num, "."); // length of $num 
     $new_num = substr($num, 0, $num_length); // $new_num = 1250 
     $new_num = (double) $new_num; // this will remove zero like 0001 = 1 
     $length = strlen($new_num); // length of $new_num 

     //Getting number after(".") 
     $num2 = strchr($num, "."); // $num2 = .75 

     $num2_length = strlen($num2); // length of $num2 
     $new_num2 = substr($num2, 1, 3); // This'll give you only '75' from '.75' 
     $new_num2 = (double) $new_num2; // remove zero like '05' equals to '5' 
     $precision_len = strlen($new_num2); // length of $new_num2 

    //Declare global variable 
     global $result; // to store result of 1250 
     global $result2; // to store result of 75 


    // Check length of input and call appropriate function 

     if ($length == 1) { 
      if ($new_num == 0 && $new_num2 == NULL) { 
       $result = "Zero Rupee"; 
      } else { 
       $result = singleDigitWord($new_num) . " Rupee"; 
      } 
      //echo $res; 
     } elseif ($length == 2) { 
      $result = twoDigitWord($new_num) . " Rupee"; 
      //echo $res; 
     } elseif ($length == 3) { 
      $result = threeDigitWord($new_num) . " Rupee"; 
      //echo $res; 
     } elseif ($length == 4 || $length == 5) { 
      $result = fourOrFiveDigitWord($length, $new_num) . " Rupee"; 
     } elseif ($length == 6 || $length == 7) { 
      $result = sixOrSevenDigitWord($length, $new_num) . " Rupee"; 
     } elseif ($length == 8 || $length == 9) { 
      $result = eightOrNineDigitWord($length, $new_num) . " Rupee"; 
     } elseif ($length == 10 || $length == 11) { 
      $result = tenOrElevenDigitWord($length, $new_num) . " Rupee"; 
     } elseif ($length == 12 || $length == 13) { 
      $result = twelveOrThirteenDigitWord($length, $new_num) . " Rupee"; 
     } 

     if ($new_num2 > 0) { 
      if ($precision_len == 1) { 
       $result2 = singleDigitWord($new_num2) . " Paisa"; 
      } elseif ($precision_len == 2) { 
       $result2 = twoDigitWord($new_num2) . " Paisa"; 
      } 
     } 
    } 

// Array containing value 1 to 9 
    function singleDigitWord($a) 
    { 
     $array = [ 
      "1" => "One", 
      "2" => "Two", 
      "3" => "Three", 
      "4" => "Four", 
      "5" => "Five", 
      "6" => "Six", 
      "7" => "Seven", 
      "8" => "Eight", 
      "9" => "Nine", 
     ]; 
     if (array_key_exists((int) $a, $array)) { 
      return $array[$a]; 
     } 
    } 


// Array containing value 10 to 19 
    function ten2nineteen($a) 
    { 
     $array = [ 
      "10" => "Ten", 
      "11" => "Eleven", 
      "12" => "Twelve", 
      "13" => "Thirteen", 
      "14" => "Fourteen", 
      "15" => "Fifteen", 
      "16" => "Sixteen", 
      "17" => "Seventeen", 
      "18" => "Eighteen", 
      "19" => "Nineteen", 
     ]; 
     if (array_key_exists((int) $a, $array)) { 
      return $array[$a]; 
     } 
    } 

// if length is 2,then 10 to 99 digits conversion 
    function twoDigitWord($a) 
    { 
     if ($a >= 10 && $a <= 19) { 
      $output = ten2nineteen($a); 
      return $output; 
     } elseif ($a >= 20 && $a <= 29) { 
      if ($a == 20) { 
       return "Twenty"; 
      } else { 
       $a = $a - 20; 
       $y = singleDigitWord($a); 
       return "Twenty " . $y; 
      } 
     } elseif ($a >= 30 && $a <= 39) { 
      if ($a == 30) { 
       return "Thirty"; 
      } else { 
       $a = $a - 30; 
       $y = singleDigitWord($a); 
       return "Thirty " . $y; 
      } 
     } elseif ($a >= 40 && $a <= 49) { 
      if ($a == 40) { 
       return "Forty"; 
      } else { 
       $a = $a - 40; 
       $y = singleDigitWord($a); 
       return "Forty " . $y; 
      } 
     } elseif ($a >= 50 && $a <= 59) { 
      if ($a == 50) { 
       return "Fifty"; 
      } else { 
       $a = $a - 50; 
       $y = singleDigitWord($a); 
       return "Fifty " . $y; 
      } 
     } elseif ($a >= 60 && $a <= 69) { 
      if ($a == 60) { 
       return "Sixty"; 
      } else { 
       $a = $a - 60; 
       $y = singleDigitWord($a); 
       return "Sixty " . $y; 
      } 
     } elseif ($a >= 70 && $a <= 79) { 
      if ($a == 70) { 
       return "Seventy"; 
      } else { 
       $a = $a - 70; 
       $y = singleDigitWord($a); 
       return "Seventy " . $y; 
      } 
     } elseif ($a >= 80 && $a <= 89) { 
      if ($a == 80) { 
       return "Eighty"; 
      } else { 
       $a = $a - 80; 
       $y = singleDigitWord($a); 
       return "Eighty " . $y; 
      } 
     } elseif ($a >= 90 && $a <= 99) { 
      if ($a == 90) { 
       return "Ninty"; 
      } else { 
       $a = $a - 90; 
       $y = singleDigitWord($a); 
       return "Ninty " . $y; 
      } 
     } 
    } 

// if length is 3,then 100 to 999 digits conversion 
    function threeDigitWord($a) 
    { 

     $output = str_split($a); 
     $first = singleDigitWord($output[0]); 
     $lastdigits = substr($a, -2); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Hundred " . $second; 
    } 

// if length is 4 or 5,then 1000 to 99999 digits conversion 
    function fourOrFiveDigitWord($length, $a) 
    { 
     if ($length == 4) { 
      $output = str_split($a); 
      $first = singleDigitWord($output[0]); 
     } elseif ($length == 5) { 
      $output = str_split($a, 2); 
      $first = twoDigitWord($output[0]); 
     } 
     $lastdigits = substr($a, -3); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Thousand " . $second; 
    } 

// if length is 6 or 7,then 100000 to 9999999 digits conversion 
    function sixOrSevenDigitWord($length, $a) 
    { 
     if ($length == 6) { 
      $output = str_split($a); 
      $first = singleDigitWord($output[0]); 
     } elseif ($length == 7) { 
      $output = str_split($a, 2); 
      $first = twoDigitWord($output[0]); 
     } 
     $lastdigits = substr($a, -5); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Lakh " . $second; 
    } 

// if length is 8 or 9,then 10000000 to 999999999 digits conversion 
    function eightOrNineDigitWord($length, $a) 
    { 
     if ($length == 8) { 
      $output = str_split($a); 
      $first = singleDigitWord($output[0]); 
     } elseif ($length == 9) { 
      $output = str_split($a, 2); 
      $first = twoDigitWord($output[0]); 
     } 
     $lastdigits = substr($a, -7); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Crore " . $second; 
    } 

// if length is 10 or 11,then 1000000000 to 99999999999 digits conversion 
    function tenOrElevenDigitWord($length, $a) 
    { 
     if ($length == 10) { 
      $output = str_split($a); 
      $first = singleDigitWord($output[0]); 
     } elseif ($length == 11) { 
      $output = str_split($a, 2); 
      $first = twoDigitWord($output[0]); 
     } 
     $lastdigits = substr($a, -9); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Billion " . $second; 
    } 

// if length is 12 or 13,then 100000000000 to 99999999999999 digits conversion 
    function twelveOrThirteenDigitWord($length, $a) 
    { 
     if ($length == 12) { 
      $output = str_split($a); 
      $first = singleDigitWord($output[0]); 
     } elseif ($length == 13) { 
      $output = str_split($a, 2); 
      $first = twoDigitWord($output[0]); 
     } 
     $lastdigits = substr($a, -11); 
     $lastdigits = (double) $lastdigits; 
     $second = lastDigitWord($lastdigits); 
     return $first . " Trillion " . $second; 
    } 


// this function gets value of $lastdigits which is declared in function above 
// like twelveOrThirteenDigitWord or many other 
// Ex: if your num is 1111 then your last digit will be 111 and you'll get 
// answer by calling this function. lastDigitWords function call one of above 
// function but i declare it here beacause we do not need to write it in every 
// function above to get conversion of $lastdigits 

    function lastDigitWord($a) 
    { 
     if ($a <= 9) { 
      return singleDigitWord($a); 
     } elseif ($a >= 10 && $a <= 99) { 
      return twoDigitWord($a); 
     } elseif ($a >= 100 && $a <= 999) { 
      return threeDigitWord($a); 
     } elseif ($a >= 1000 && $a <= 99999) { 
      $new_length = strlen($a); 
      return fourORFiveDigitWord($new_length, $a); 
     } elseif ($a >= 100000 && $a <= 9999999) { 
      $new_length = strlen($a); 
      return sixORSevenDigitWord($new_length, $a); 
     } elseif ($a >= 10000000 && $a <= 999999999) { 
      $new_length = strlen($a); 
      return eightOrNineDigitWord($new_length, $a); 
     } elseif ($a >= 1000000000 && $a <= 99999999999) { 
      $new_length = strlen($a); 
      return tenOrElevenDigitWord($new_length, $a); 
     } 
    } 
    ?> 
    <html> 
     <body> 
      <form name="myForm" method="POST" action=""> 
       <table cellspacing="10" cellpadding="10"> 
        <tr> 
         <td><label for="num">Enter Number: </label></td> 
         <td><input type="text" name="num" id="num" value="<?php 
          if (isset($_POST['num'])) { 
           echo $_POST['num']; 
          } 
          ?>"></td> 
         <td><input type="submit" name="submit" id="submit" value="submit"></td> 
        </tr> 
       </table> 
      </form> 
      <p><b>In words : </b> 
       <?php 
       global $result; 
       global $result2; 
       echo $result . " " . $result2; 
       ?> 
      </p> 
     </body> 
    </html> 
+0

虽然这段代码是受欢迎的,并且可能会提供一些帮助,但如果它包含* how *和* why *的解释](// meta.stackexchange.com/q/114762)问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

感谢您的建议@Toby Speigh。并在更新后检查以上程序中的注释和简短说明** – jaykishan

0
<?php 

$price = mysqli_real_escape_string($conn, $_GET['price']); 
$adprice = mysqli_real_escape_string($conn, $_GET['adprice']); 
$number = $price-$adprice; 

$no = round($number); 
$point = round($number - $no, 2) * 100; 
$hundred = null; 
$digits_1 = strlen($no); 
$i = 0; 
$str = array(); 
$words = array('0' => '', '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', '20' => 'Twenty', 
    '30' => 'Thirty', '40' => 'Forty', '50' => 'Fifty', 
    '60' => 'Sixty', '70' => 'Seventy', 
    '80' => 'Eighty', '90' => 'Ninety'); 
$digits = array('', 'Hundred', 'Thousand', 'Lakh', 'Crore'); 
while ($i < $digits_1) { 
$divider = ($i == 2) ? 10 : 100; 
$number = floor($no % $divider); 
$no = floor($no/$divider); 
$i += ($divider == 10) ? 1 : 2; 
if ($number) { 
    $plural = (($counter = count($str)) && $number > 9) ? 's' : null; 
    $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; 
    $str [] = ($number < 21) ? $words[$number] . 
       " " . $digits[$counter] . $plural . " " . $hundred 
       : 
       $words[floor($number/10) * 10] 
       . " " . $words[$number % 10] . " " 
       . $digits[$counter] . $plural . " " . $hundred; 
      } else $str[] = null; 
       } 
$str = array_reverse($str); 
$result = implode('', $str); 
$points = ($point) ? 
      "." . $words[$point/10] . " " . 
      $words[$point = $point % 10] : ''; 
      echo $result . " " . $points . "Only "; 
?> 
0

我试着添加一些小数值。希望它会有所帮助。

<?php 
function convertNumber($number) 
{ 
    list($integer,$fraction) = explode(".", (string) $number); 

    $output = " "; 

    if ($integer{0} == "-") 
    { 
     $output = "negative "; 
     $integer = ltrim($integer, "-"); 
    } 
    else if ($integer{0} == "+") 
    { 
     $output = "positive "; 
     $integer = ltrim($integer, "+"); 
    } 

    if ($integer{0} == "0") 
    { 
     $output .= "zero"; 
    } 
    else 
    { 
     $integer = str_pad($integer, 36, "0", STR_PAD_LEFT); 
     $group = rtrim(chunk_split($integer, 3, " "), " "); 
     $groups = explode(" ", $group); 

     $groups2 = array(); 
     foreach ($groups as $g) 
     { 
      $groups2[] = convertThreeDigit($g{0}, $g{1}, $g{2}); 
     } 

     for ($z = 0; $z < count($groups2); $z++) 
     { 
      if ($groups2[$z] != "") 
      { 
       $output .= $groups2[$z] . convertGroup(11 - $z) . (
         $z < 11 
         && !array_search('', array_slice($groups2, $z + 1, -1)) 
         && $groups2[11] != '' 
         && $groups[11]{0} == '0' 
          ? " and " 
          : " " 
        ); 
      } 
     } 

     $output = rtrim($output, ", "); 
    } 

    if ($fraction > 0) 
    { 
     $output .= " PESOS "; 
     for ($i = 0; $i < strlen($fraction); $i++) 
     { 
      if($fraction==01){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and one centavo only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==02){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and two centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==03){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and three centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==04){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and four centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==05){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and five centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==06){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and six centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==07){ 

       $i = 1; 
       while ($i <2): 
         $output .= " point seven centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==8 || $fraction==08){ 

       $i = 1; 
       while ($i <2): 
       $output .= " and eight centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==9 || $fraction==09){ 

       $i = 1; 
       while ($i <2): 
       $output .= " and nine centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==10){ 

        $i = 1; 
       while ($i <2): 
        $output .= " and ten centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==11){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and eleven centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==12){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twelve centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==13){ 

      $i = 1; 
       while ($i <2): 
         $output .= " and thirteen centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==14){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and fourteen centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==15){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and fifteen centavos only"; 

       $i++; 
       endwhile; 
      } 
      else if($fraction==16){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and sixteen centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==17){ 


       $i = 1; 
       while ($i <2): 
        $output .= " and seventeen centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==18){ 


       $i = 1; 
       while ($i <2): 
       $output .= " and eighteen centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==19){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and nineteen centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==20){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twenty centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==21){ 
       $i = 1; 
       while ($i <2): 
        $output .= " and twenty one centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==22){ 

       $i = 1; 
       while ($i <2): 
         $output .= " and twenty two centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==23){ 
       $i = 1; 
       while ($i <2): 
         $output .= " and twenty three centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==24){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twenty four centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==25){ 

      $i = 1; 
       while ($i <2): 
       $output .= " and twenty five centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==26){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twenty six centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==27){ 

       $i = 1; 
       while ($i <2): 
       $output .= " and twenty seven centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==28){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twenty eight centavos only"; 
       $i++; 
       endwhile; 
      } 
      else if($fraction==29){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and twenty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==30){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==31){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty one centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==32){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty two centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==33){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty three centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==34){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty four centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==35){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty five centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==36){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==37){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==38){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==39){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and thirty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==40){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==41){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty one centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==42){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty two centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==43){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty three centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==44){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty four centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==45){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty five centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==46){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==47){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==48){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==49){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fourty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==50){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==51){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty one centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==52){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty two centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==53){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty three centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==54){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty four centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==55){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty five centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==56){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==57){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==58){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==59){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and fifty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==60){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==61){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty one centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==62){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty two centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==63){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty three centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==64){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty four centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==65){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty five centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==66){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty six centavos only"; 
        $i++; 
       endwhile; 
      } 

     else if($fraction ==67){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty seven centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==68){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty eight centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==69){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and sixty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==70){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy centavos only"; 
        $i++; 
       endwhile; 
      } 
    else if($fraction ==71){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy one centavos only"; 
        $i++; 
       endwhile; 
      } 

    else if($fraction ==72){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy two centavos only"; 
        $i++; 
       endwhile; 
      } 
    else if($fraction ==73){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy three centavos only"; 
        $i++; 
       endwhile; 
      } 
    else if($fraction ==74){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy four centavos only"; 
        $i++; 
       endwhile; 
      } 

      else if($fraction ==75){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy five centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==76){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==77){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==78){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==79){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and seventy nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==80){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==81){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty one centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==82){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty two centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==83){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty three centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==84){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty four centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==85){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty five centavos only"; 
        $i++; 
       endwhile; 
      } 
     else if($fraction ==86){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==87){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==88){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==89){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and eighty nine centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==90){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==91){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety one centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==92){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety two centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==93){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety three centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==94){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety four centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==95){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety five centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==96){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety six centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==97){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety seven centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==98){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety eight centavos only"; 
        $i++; 
       endwhile; 
      } 
      else if($fraction ==99){ 

       $i = 1; 
       while ($i <2): 
        $output .= " and ninety nine centavos only"; 
        $i++; 
       endwhile; 
      } 

     } 

    } 
     else{ 
      $output .= " PESOS ONLY"; 
      } 

    return $output; 
} 

function convertGroup($index) 
{ 
    switch ($index) 
    { 
     case 11: 
      return " decillion"; 
     case 10: 
      return " nonillion"; 
     case 9: 
      return " octillion"; 
     case 8: 
      return " septillion"; 
     case 7: 
      return " sextillion"; 
     case 6: 
      return " quintrillion"; 
     case 5: 
      return " quadrillion"; 
     case 4: 
      return " trillion"; 
     case 3: 
      return " billion"; 
     case 2: 
      return " million"; 
     case 1: 
      return " thousand"; 
     case 0: 
      return ""; 
    } 
} 

function convertThreeDigit($digit1, $digit2, $digit3) 
{ 
    $buffer = " "; 

    if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") 
    { 
     return ""; 
    } 

    if ($digit1 != "0") 
    { 
     $buffer .= convertDigit($digit1) . " hundred"; 
     if ($digit2 != "0" || $digit3 != "0") 
     { 
      $buffer .= " "; 
     } 
    } 

    if ($digit2 != "0") 
    { 
     $buffer .= convertTwoDigit($digit2, $digit3); 
    } 
    else if ($digit3 != "0") 
    { 
     $buffer .= convertDigit($digit3); 
    } 

    return $buffer; 
} 

function convertTwoDigit($digit1, $digit2) 
{ 
    if ($digit2 == "0") 
    { 
     switch ($digit1) 
     { 
      case "1": 
       return "ten"; 
      case "2": 
       return "twenty"; 
      case "3": 
       return "thirty"; 
      case "4": 
       return "forty"; 
      case "5": 
       return "fifty"; 
      case "6": 
       return "sixty"; 
      case "7": 
       return "seventy"; 
      case "8": 
       return "eighty"; 
      case "9": 
       return "ninety"; 
     } 
    } else if ($digit1 == "1") 
    { 
     switch ($digit2) 
     { 
      case "1": 
       return "eleven"; 
      case "2": 
       return "twelve"; 
      case "3": 
       return "thirteen"; 
      case "4": 
       return "fourteen"; 
      case "5": 
       return "fifteen"; 
      case "6": 
       return "sixteen"; 
      case "7": 
       return "seventeen"; 
      case "8": 
       return "eighteen"; 
      case "9": 
       return "nineteen"; 
     } 
    } else 
    { 
     $temp = convertDigit($digit2); 
     switch ($digit1) 
     { 
      case "2": 
       return "twenty $temp"; 
      case "3": 
       return "thirty $temp"; 
      case "4": 
       return "forty $temp"; 
      case "5": 
       return "fifty $temp"; 
      case "6": 
       return "sixty $temp"; 
      case "7": 
       return "seventy $temp"; 
      case "8": 
       return "eighty $temp"; 
      case "9": 
       return "ninety $temp"; 
     } 
    } 
} 

function convertDigit($digit) 
{ 
    switch ($digit) 
    { 
     case "0": 
      return "zero"; 
     case "1": 
      return "one"; 
     case "2": 
      return "two"; 
     case "3": 
      return "three"; 
     case "4": 
      return "four"; 
     case "5": 
      return "five"; 
     case "6": 
      return "six"; 
     case "7": 
      return "seven"; 
     case "8": 
      return "eight"; 
     case "9": 
      return "nine"; 
    } 

} 
strtoupper(convertNumber(2143.45) 

?> 
0
// three hundred and thirteen rupees and seventy-six paise 
echo getIndianCurrency(313.76); 

function getIndianCurrency(float $number) 
{ 
    $decimal = round($number - ($no = floor($number)), 2) * 100; 
    $hundred = null; 
    $digits_length = strlen($no); 
    $i = 0; 
    $str = array(); 
    $words = array(0 => '', 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', 20 => 'twenty', 30 => 'thirty', 
     40 => 'forty', 50 => 'fifty', 60 => 'sixty', 
     70 => 'seventy', 80 => 'eighty', 90 => 'ninety'); 
    $digits = array('', 'hundred','thousand','lakh', 'crore'); 

    while($i < $digits_length) { 
     $divider = ($i == 2) ? 10 : 100; 
     $number = floor($no % $divider); 
     $no = floor($no/$divider); 
     $i += $divider == 10 ? 1 : 2; 
     if ($number) { 
      $plural = (($counter = count($str)) && $number > 9) ? 's' : null; 
      $hundred = ($counter == 1 && $str[0]) ? ' and ' : null; 
      $str [] = ($number < 21) ? $words[$number].' '. $digits[$counter]. $plural.' '.$hundred:$words[floor($number/10) * 10].' '.$words[$number % 10]. ' '.$digits[$counter].$plural.' '.$hundred; 
     } else $str[] = null; 
    } 

    $rupees = implode('', array_reverse($str)); 
    $paise = ''; 

    if ($decimal) { 
     $paise = 'and '; 
     $decimal_length = strlen($decimal); 

     if ($decimal_length == 2) { 
      if ($decimal >= 20) { 
       $dc = $decimal % 10; 
       $td = $decimal - $dc; 
       $ps = ($dc == 0) ? '' : '-' . $words[$dc]; 

       $paise .= $words[$td] . $ps; 
      } else { 
       $paise .= $words[$decimal]; 
      } 
     } else { 
      $paise .= $words[$decimal % 10]; 
     } 

     $paise .= ' paise'; 
    } 

    return ($rupees ? $rupees . 'rupees ' : '') . $paise ; 
} 

用途:

echo getIndianCurrency(313.76); 

输出:

three hundred and thirteen rupees and seventy-six paise 
相关问题