phpbar.de logo

Mailinglisten-Archive

[php] output best - funktionen

[php] output best - funktionen

Daniel Lorch daniel_(at)_lorch.cc
Fri, 29 Dec 2000 15:12:50 +0100


hi leute,

was haltet ihr von diesen funktionen? rein unter
programmiertechnischem aspekt (sauberkeit, programmierstil). ich
vermute das eine oder andere lässt sich verbessern (vieles erscheint
mir gemurkse, aber mir fällt nichts besseres ein). der
verwendungszweck ist einfach - man gibt beispielsweise
best_filesize($bytes) an und als return erhält man die zahl gekürzt
mit der besten einheit.

was kommt eigentlich nach TB?

<?

// Outputs a filesize in best human readable unit
// (c) daniel lorch <daniel_(at)_lorch.cc>, 2000

function best_filesize($bytes)
{
    // intentionally used string keys, otherwise would exceed maximum array index
    $units=array(
      "1"                 => "Bytes",
      "1024"              => "KB",
      (string)pow(1024,2) => "MB",
      (string)pow(1024,3) => "GB",
      (string)pow(1024,4) => "TB"
    );

    krsort($units); // big units first

    while(list($base,$title)=each($units))
      if(floor($bytes/$base) != 0)
      {
        if($base == 1) // Bytes
          return $bytes." ".$title;
        else
          return number_format($bytes/$base, 1, ".", "'")." $title";
      }
}


// Outputs a time in best human readable unit
// (c) daniel lorch <daniel_(at)_lorch.cc>, 2000

function modulo($a,$b) // needed for best_time()
{
  $tmp=floor($a/$b);
  return $a-($b*$tmp);
}

function best_time($seconds)
{
    // intentionally used string keys, otherwise would exceed maximum array index
    $units=array(
      "1"                 => "Seconds",
      "60"                => "Minutes",
      (string)pow(60,2)   => "Hours"
    );

    krsort($units); // big units first

    while(list($base,$title)=each($units))
      if(floor($seconds/$base) != 0)
      {
        if($base == 1) // Seconds
          return $seconds." ".$title;
        else
        {
          $a=floor($seconds/$base);
          $b=modulo($seconds,$base);
          $b=sprintf("%02d", modulo($b,100)); // modulo ensures that there aren't more than 2 digits
          return "$a:$b $title";
        }
      }
}

?>

cu




php::bar PHP Wiki   -   Listenarchive