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