note 26234 deleted from function.number-format by sniper

From: Date: Tue, 30 Sep 2003 01:39:56 +0000
Subject: note 26234 deleted from function.number-format by sniper
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-57362@lists.php.net to get a copy of this message
Note Submitter: jeremyirons@genevus.com ---- In my CHM version of these docs, someone asked "how can I show the number into word format ?" I figured I would share: function textual_number($number, $nd = false) { if($number == 0 || $number == "") return "zero"; if($number < 0) { $number = -$number; $words[] = "negative"; } $thousands = array("", "thousand", "million", "billion", "trillion", "zillion"); $numbers[0] = array("", "one hundred", "two hundred", "three hundred", "four hundred", "five hundred", "six hundred", "seven hundred", "eight hundred", "nine hundred"); $numbers[1] = array("", "ten", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety"); $numbers[2] = array("", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"); $translate[0] = array("", "one hundredth", "two hundredth", "three hundredth", "four hundredth", "five hundredth", "six hundredth", "seven hundredth", "eight hundredth", "nine hundredth"); $translate[1] = array("", "tenth", "twentieth", "thirtieth", "fourtieth", "fiftieth", "sixtieth", "seventieth", "eightieth", "ninetieth"); $translate[2] = array( "", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "nineth", "", "eleventh", "twelveth", "thirteenth", "fourteenth", "fifteenth", "sixteenth", "seventeenth", "eighteenth", "nineteenth"); $a = number_format($number, 0, ".", ","); $arr = explode(",", $a); $arr = array_reverse($arr); for($key = count($arr)-1; $key >= 0; $key--) { $segment = $arr[$key]; $segment = str_pad($segment, 3, "0", STR_PAD_LEFT); for($p = 0; $p < strlen($segment); $p++) { $s = substr($segment, $p, 1); $nexts = substr($segment, $p+1, 1); if($p == 1 && $s == 0 && $nexts != 0 && count($words) > 0) $words[] = "and"; if($s > 0) { $sub = 2 - $p; if($p == 1 && $s == 1 && $nexts != 0) { //special handling for eleven to nineteen $nset = $numbers[2]; $words[] = $nset[10 + $nexts]; break; } $nset = $numbers[$p]; $words[] = $nset[$s]; } } if($thousands[$key] != "") $words[] = ($thousands[$key] != "" ? " $thousands[$key]" : ""); } if($nd) { $lastword = $words[count($words)-1]; for($j = 0; $j < count($numbers); $j++) foreach($numbers[$j] as $key => $value) if($value == $lastword) $words[count($words)-1] = $translate[$j][$key]; } return implode(" ", $words); }

« previous php.notes (#57362) next »