Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Patryk 'yarpo' Jar, ostatnia modyfikacja: 2008-01-07
Czasem na stronie musimy wyświetlić jakieś długie liczby. Jednak liczba w stylu 10000102231202 jest bardzo mało czytelna. Trochę lepiej wygląda: 10 000 102 231 202, prawda? Skoro wygląda to lepiej, to czemu by nie zrobić tego lepiej :)
Oto klasa załatwiająca sprawę:
<?PHP /* autor Patryk yarpo Jar yarpo at poczta.onet.pl last-mod: 7XII07 */ class number { protected $length; protected $str; protected $str_with_gaps; protected $modulo; protected $char; function __construct($n) { if (!is_string($n)) $this->str = strval($n); else $this->str = $n; $this->length = strlen($this->str)-1; $this->modulo = 3; $this->char = ' '; } private function reverse($str) { $this->str_with_gaps = ""; $n = strlen($str); while($n--) $this->str_with_gaps .= $str[$n]; } private function change_mod($n) { $this->modulo = $n; } private function change_char($c) { $this->char = $c; } private function make_gaps() { $tmp = ""; for ($i=0; $i <= $this->length; $i++) { if ( !($i % $this->modulo) && $i) $tmp .= $this->char; $tmp .= $this->str[$this->length-$i]; } $this->reverse($tmp); } public function get_length() { return $this->length; } public function get_number($mod=3, $char=" ") { if ($mod != $this->modulo) $this->change_mod($mod); if ($char != $this->char) $this->change_char($char); $this->make_gaps(); return $this->str_with_gaps; } }; // end class ?>
Jak z niego skorzystać? Oto przykład:
$liczba = "1000"; $o_liczba = new number($liczba); echo 'Powinno być 1#000, a jest: ' . $o_liczba->get_number(3, '#').'<br />'; echo 'Powinno być 1,000, a jest: ' . $o_liczba->get_number(3, ",").'<br />'; echo 'Powinno być 10.00, a jest: ' . $o_liczba->get_number(2, ".").'<br />';
Jak widać, kod długi, ale działanie bardzo proste :)
Pisząc tą klasę nie byłem świadomy istnienia już podobnej funkcji w PHP jednak porada zostaje do celów edukacyjnych :)
Wszelkie uwagi co do działania klasy można zgłaszać na forum.
Patryk 'yarpo' Jar
szukaj: formatowanie długich liczb PHP
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org