2012-10-24 10 views
8

Edit: Funkcja poniżej teraz oznacza skrót prawidłowo wdrożony @Asad „s rozwiązanieliczba PHP abbreviator

Cześć Jestem obecnie pracuje nad jak przycisk, mam wszystkie funkcje baza pracuje ładnie jednak zacząłem numer skróconego kodu i uderz w ścianę, ponieważ nie wiem, jak uczynić ten skrót dokładniejszym.

Mam numer, na przykład 1000, 1230, 1500, 154000, 1500000, 1000000

I chcę sformatować je za pomocą skrótu. tj

czy to tysiąc, potem 1k, 1.1k, 2k, 10k, 10.5k etc ...

i tak dalej dla dziesiątek, setek tysięcy i milionów, etc ...

W tej chwili mam następującą funkcję, ale nie jest to wystarczająco szczegółowe:

function abreviateTotalCount($value) 
{ 

    $abbreviations = array(12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => ''); 

    foreach($abbreviations as $exponent => $abbreviation) 
    { 

     if($value >= pow(10, $exponent)) 
     { 

      return round(floatval($value/pow(10, $exponent))).$abbreviation; 

     } 

    } 

} 

Z góry dziękuję!

+1

To całkiem niezłe rozwiązanie, co masz na myśli, mówiąc "mało konkretny"? –

+0

Co jest nie tak z aktualnym kodem? Czy to nie działa? –

+0

@Asad Hi, unfortunatley to zwraca tylko całe wersje skrótów, które chcę. tj. 1k, 2k, ale nic pomiędzy –

Odpowiedz

5

Jeśli chcesz zachować miejsca po przecinku, użyj floatval zamiast intval:

return round(floatval($value/pow(10, $exponent)),1).$abbreviation; 

dostaje reprezentacji pływaka i rund do 1 miejsca po przecinku.

+0

To się udało. Dzięki, zaakceptuje odpowiedź, gdy mi pozwoli –

Powiązane problemy