2012-10-24 12 views
8

Edit: Funktion unten jetzt steht die Abkürzung korrekt implementiert @Asad ‚s LösungPHP Nummer abbreviator

Hallo ich zur Zeit auf einer Schaltfläche arbeite, ich habe die ganze Funktionalität Basis arbeiten gut aber ich habe begonnen der Zahlenkürzelcode und eine Wand schlagen, wie ich nicht herausfinden kann, wie man die Abkürzung präzisiert.

Ich habe eine Nummer, z.B. 1000, 1230, 1500, 154000, 1500000, 1000000

Und ich möchte sie mit einer Abkürzung formatieren. dh

wenn es tausend, dann 1k, 1.1K, 2k, 10k, 10.5K etc ...

und so weiter für die Zehner, Hunderter Tausende und Abermillionen, etc ...

Im Moment habe ich die folgende Funktion, aber es ist nicht spezifisch genug:

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; 

     } 

    } 

} 

Vielen Dank im Voraus!

+1

Das ist eine ziemlich gute Lösung, was meinst du mit "nicht spezifisch genug"? –

+0

Was ist mit deinem aktuellen Code falsch? Funktioniert es nicht? –

+0

@Asad Hallo, leider gibt es nur ganze Versionen der Abkürzungen, die ich will. also 1k, 2k, aber nichts dazwischen –

Antwort

5

Wenn Sie die Dezimalstellen halten möchten, verwenden Sie floatval statt intval:

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

bekommt die Schwimmer Darstellung und Runden auf 1 Dezimalstelle.

+0

Das hat es getan. Danke, werde die Antwort akzeptieren, wenn es mir erlaubt –

1

Statt intval() machen, verwenden number_format() Sie mit der gewünschten Menge an Dezimalstellen eine Nummer zu geben.