Hi, Thursday, September 19, 2002, 5:29:06 AM, you wrote: BY> What does this do?
Here is the class again with all errors fixed and some unfinished bits but it should be enough to get you started. It uses recursion as it repeats after one thousand .. ie one, two, three .... one thousand, two thousand, three thousand... class num_to_text { var $mode; //NUMERIC CURRENCY var $words = array(0=>array('zero','one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen','twenty'), 1=>array('zero','one','twenty','thirty','fourty','fifty','sixty','seventy','eighty','ninety'), 2=>array('thousand','million')); var $money = array(0=>array('Dollar','Dollars'), 1=>array('Cent','Cents')); function num_class($mode = 'NUMERIC'){ $this->mode = $mode; } function convert($num){ return $this->num($num,1); } function num($num,$key = 0){ static $t; static $call; $res = intval($num/100); $left = $num%100; if($key == 1){ //first non recursive call reset text and thousand/million toggle $t = ""; $call = 0; } else{ // do we need to print thousand as this is a recursive call if($num%1000 > 0)$t = ' '.$this->words[2][$call].' '.$t; $call ^= 1; //toggle call for next recursion } if($left <= 20){ // no need to split it if($left == 0){ // is the whole mess just zero if($res == 0) $t = $this->words[0][$left].$t; } else{ $t = $this->words[0][$left].$t; } } else{ //need to split it up $tens = intval($left/10); $units = $left%10; ($units > 0)? $units = ' '.$this->words[0][$units] : $units = ''; // eg thirty or thirty one $t = $this->words[1][$tens].$units.$t; } if($res < 10){ if($res > 0){ ($left == 0)? $and = '':$and = ' and '; // do we need to print 'and' if($res > 0) $t = $this->words[0][$res]. " hundred".$and.$t; } } else{ $res = $res%10; if($res > 0){ ($left == 0)? $and = '':$and = ' and '; $t = $this->words[0][$res]. " hundred".$and.$t; } else{ if($left > 0)$t = ' and '.$t; } $num = intval($num/1000); $this->num($num); } return $t; } } //usage $n2t = new num_to_text(); for($num = 0;$num < 11;$num++){ echo $num.' '.$n2t->convert($num).'<br>'; } -- regards, Tom -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php