inc/numberutils.php

<?php
$number_names 
= array (
  
"ones" => array (
    
"",
    
"one",
    
"two",
    
"three",
    
"four",
    
"five",
    
"six",
    
"seven",
    
"eight",
    
"nine",
    
"ten",
    
"eleven",
    
"twelve",
    
"thirteen",
    
"fourteen",
    
"fifteen",
    
"sixteen",
    
"seventeen",
    
"eighteen",
    
"nineteen"
  
),
  
"tens" => array (
    
"",
    
"ten",
    
"twenty",
    
"thirty",
    
"forty",
    
"fifty",
    
"sixty",
    
"seventy",
    
"eighty",
    
"ninety",
  ),
  
"orders" => array (
    
"",
    
"thousand",
    
"million",
    
"billion",
    
"trillion",
    
"quadrillion",
    
"quintillion"
  
)
);

$time_names = array (
  
"decade" => 315619200,
  
"year" => 31536000,
  
"month" => 2592000,
  
"week" => 604800,
  
"day" => 86400,
  
"hour" => 3600,
  
"minute" => 60,
  
"second" => 1
);

function 
suborder_name($number) {
  global 
$number_names;
  
$name "";
  if (
$number >= 1000)
    
$number %= 1000;
  if (
$number >= 100) {
    
$digit = (int)($number 100);
    
$number %= 100;
    
$name .= "{$number_names["ones"][$digit]} hundred ";
  }
  if (
$number >= 20) {
    
$digit = (int)($number 10);
    
$number %= 10;
    
$name .= "{$number_names["tens"][$digit]}-";
  }
  
$name .= "{$number_names["ones"][$number]}";
  if (
$name{strlen($name)-1} == ' ' || $name{strlen($name)-1} == '-')
    
$name substr($name,0,strlen($name)-1);
  return 
$name;
}

function 
order_name($number$order) {
  global 
$number_names;
  
$name suborder_name($number);
  if (
$name) {
    
$name .= {$number_names["orders"][$order]}";
    
$name trim($name);
  }
  return 
$name;
}

function 
number_name($number) {
  
$number = (int)$number;
  if (
$number == 0)
    return 
"zero";
  
$negative false;
  if (
$number 0) {
    
$negative true;
    
$number = -$number;
  }
  
$order 0;
  
$name "";
  while (
$number 0) {
    
$suborder = (int)($number 1000);
    
$number = (int)($number 1000);
    
$subordername order_name($suborder$order);
    
$name "$subordername$name";
    
$order++;
  }
  if (
$name)
    
$name substr($name,0,strlen($name)-2);
  if (
$negative)
    
$name "negative $name";
  return 
$name;
}

function 
time_name($seconds,$verbose=0) {
  global 
$time_names;
  
$name "";
  
$seconds = (int)$seconds;
  if (
$seconds <= 0)
    return (
"zero seconds");
  foreach (
$time_names as $span => $length) {
    if (
$seconds >= $length) {
      
$num = (int)($seconds $length);
      
$seconds %= $length;
      if (
$name || $verbose || $num != 1)
        
$name .= number_name($num) . " ";
      
$name .= "$span";
      if (
$num != 1)
        
$name .= "s";
      
$name .= ", ";
    }
  }
  
$name substr($name,0,strlen($name)-2);
  if(
strrpos($name,", ") !== FALSE)
    
$name substr_replace($name," and",strrpos($name,", "),1);
  return 
$name;
}

?>


Notes:


Edit this page!
View the most recent revision to this page.
If you haven't yet, read the Wiki Introduction.
Up one level to inc/.
Return to user's home page: Flouri
Return to the Wiki Home.
Hosted by Shyou.org Webservices.