# Convert Numbers to Words

This little script was whipped up to convert numbers to words for use in a cheque book, it has an upper limit of 999999999 but that should take care of most sane amounts of cash. Should you require a function that needs to spell out more cash than this, my rates are \$7474.00/hr 😉

``` <?php /** *  Function:   convert_number * *  Description: *  Converts a given integer (in range [0..1T-1], inclusive) into *  alphabetical format ("one", "two", etc.) * *  @int * *  @return string * */ function convert_number(\$number) { if ((\$number < 0) || (\$number > 999999999)) { throw new Exception("Number is out of range"); } \$Gn = floor(\$number / 1000000);  /* Millions (giga) */ \$number -= \$Gn * 1000000; \$kn = floor(\$number / 1000);     /* Thousands (kilo) */ \$number -= \$kn * 1000; \$Hn = floor(\$number / 100);      /* Hundreds (hecto) */ \$number -= \$Hn * 100; \$Dn = floor(\$number / 10);       /* Tens (deca) */ \$n = \$number % 10;               /* Ones */ \$res = ""; if (\$Gn) { \$res .= convert_number(\$Gn) . " Million"; } if (\$kn) { \$res .= (empty(\$res) ? "" : " ") . convert_number(\$kn) . " Thousand"; } if (\$Hn) { \$res .= (empty(\$res) ? "" : " ") . convert_number(\$Hn) . " Hundred"; } \$ones = array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eightteen", "Nineteen"); \$tens = array("", "", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eigthy", "Ninety"); if (\$Dn || \$n) { if (!empty(\$res)) { \$res .= " and "; } if (\$Dn < 2) { \$res .= \$ones[\$Dn * 10 + \$n]; } else { \$res .= \$tens[\$Dn]; if (\$n) { \$res .= "-" . \$ones[\$n]; } } } if (empty(\$res)) { \$res = "zero"; } return \$res; } ```

```\$cheque_amt = 8747484 ; try { echo convert_number(\$cheque_amt); } catch(Exception \$e) { echo \$e->getMessage(); } ?>```