2013-07-22 14 views
15

Ich habe diesehinzufügen Kommas als Tausendertrennzeichen und Gleitkomma-Punkt in php

$example = "1234567" 
$subtotal = number_format($example, 2, '.', ''); 

die Rückkehr von $ Zwischensumme ist "1234567.00" wie die Definition von Wert Ihres $ zu ändern, macht es so "1,234,567.00"

+3

number_format (' '$ Beispiel 2,''); wird das Ding für dich machen .. – Reshil

+0

Da du neu hier bist, akzeptiere die Antwort (tick), die dein Problem gelöst hat. Up-Vote (Pfeil nach oben) die Antwort (en), die Ihnen Informationen geben oder Ihnen helfen. Stimmen Sie (nach unten) die Antwort (en) ab, die gefälscht sind. – Techie

+0

Hinweis: Wenn du das Trennzeichen länger als 1 Zeichen verwenden willst (zB " "), funktioniert das bei php <5.4.0 leider nicht. – UbiQue

Antwort

27

Nachfolgend finden Ausgabe 1,234,567.00

$example = "1234567"; 
$subtotal = number_format($example, 2, '.', ','); 
echo $subtotal; 

Syntax

string number_format (float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',') 

Aber ich rate dir money_format zu verwenden, die eine Zahl als Währung String formatiert wird

+0

klappt, danke sehr –

4

Sie haben viele Möglichkeiten, aber money_format kann den Trick für Sie tun.

// Example: 

$amount = '100000'; 
setlocale(LC_MONETARY, 'en_IN'); 
$amount = money_format('%!i', $amount); 
echo $amount; 

// Output: 

"1,00,000.00" 

Bitte beachten Sie, dass money_format() nur, wenn das System strfmon Fähigkeiten definiert ist. Zum Beispiel, Windows nicht, so ist es in Windows undefiniert.

Finale edit: Hier ist eine reine PHP-Implementierung, die auf jedem System funktioniert:

$amount = '10000034000'; 
$amount = moneyFormatIndia($amount); 
echo number_format($amount, 2, '.', ''); 

function moneyFormatIndia($num){ 
    $explrestunits = "" ; 
    if(strlen($num)>3){ 
     $lastthree = substr($num, strlen($num)-3, strlen($num)); 
     $restunits = substr($num, 0, strlen($num)-3); // extracts the last three digits 
     $restunits = (strlen($restunits)%2 == 1)?"0".$restunits:$restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping. 
     $expunit = str_split($restunits, 2); 
     for($i=0; $i<sizeof($expunit); $i++){ 
      // creates each of the 2's group and adds a comma to the end 
      if($i==0){ 
       $explrestunits .= (int)$expunit[$i].","; // if is first value , convert into integer 
      }else{ 
       $explrestunits .= $expunit[$i].","; 
      } 
     } 
     $thecash = $explrestunits.$lastthree; 
    } else { 
     $thecash = $num; 
    } 
    return $thecash; // writes the final format where $currency is the currency symbol. 
} 
+0

weiss nicht was ich gemacht habe falsch, aber es gibt tatsächlich nichts aus. Ich werde stattdessen die Methode von @Dasun verwenden. danke trotzdem –

+0

Überprüfen Sie es meine Pure PHP-Implementierung –

+0

Entschuldigung, aber was macht das 'number_format' in der dritten Zeile? Wie ist es hier, ich lese die php.net-Definition, immer noch keine Ahnung. tatsächlich funktioniert Ihre Funktion ohne sie gut und es wird ein Fehler ausgegeben, wenn ich die dritte Zeile einbeziehe. –

3

Ref: http://php.net/manual/en/function.money-format.php

string money_format (string $format , float $number) 

ex:

// let's print the international format for the en_US locale 
setlocale(LC_MONETARY, 'en_US'); 
echo money_format('%i', $number) . "\n"; 
// USD 1,234.56 

Hinweis: Die Die Funktion money_format() wird nur definiert, wenn das System s hat trfmon Fähigkeiten. Zum Beispiel, Windows nicht, so money_format() ist in Windows nicht definiert.

Hinweis: Die Kategorie LC_MONETARY der Gebietsschemaeinstellungen beeinflusst das Verhalten dieser Funktion. Verwenden Sie setlocale(), um das entsprechende Standardgebietsschema festzulegen, bevor Sie diese Funktion verwenden.

Verwenden number_format: http://www.php.net/manual/en/function.number-format.php

string number_format (float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',') 

$number  = 123457; 
$format_number = number_format($number, 2, '.', ','); 
// 1,234.57 
+0

Ich weiß nicht, was ich falsch gemacht habe, aber es gibt tatsächlich nichts aus. Ich werde stattdessen die Methode von @Dasun verwenden.danke trotzdem –

+0

@LionLiu: money_format wird nicht mit den Fenstern arbeiten, aktualisierte ich die Antwort bitte überprüfen Sie es. –

Verwandte Themen