2013-07-22 27 views
15

ho questoAggiungere le virgole come separatore delle migliaia e di punti in virgola mobile in php

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

il ritorno di $ subtotale è "1234567.00" come modificare la definizione di $ subtotale, rendono come questo "1,234,567.00"

+3

number_format (' '$ esempio, 2,,','); farai la cosa per te .. – Reshil

+0

Dato che sei nuovo qui, accetta la risposta (tick) che ha risolto il tuo problema. Up-vote (freccia su) la/le risposta/e che/i fornisce/i/tu/i/i/i/tu/tu/i/i/i. Down-vote (freccia giù) la risposta (s) che sono falsi. – Techie

+0

Suggerimento: se si desidera utilizzare il separatore più lungo di 1 carattere (es. " ") che non funzionerà in php <5.4.0, sfortunatamente .. – UbiQue

risposta

27

Qui di seguito l'uscita volontà 1,234,567.00

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

Sintassi

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

Ma io consiglio di utilizzare money_format che formatta un numero come una stringa di valuta

+0

funziona, grazie mille –

4

si hanno molte opzioni, ma money_format può fare il trucco per voi.

// Example: 

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

// Output: 

"1,00,000.00" 

prega di notare che money_format() è definito solo se il sistema ha strfmon capacità. Ad esempio, Windows non lo è, quindi non è definito in Windows.

montaggio finale: Ecco un Attuazione puro PHP che funziona su qualsiasi sistema:

$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

non so cosa ho fatto sbagliato ma in realtà non emette nulla. userò il metodo da @Dasun invece. grazie comunque –

+0

Controlla la mia implementazione PHP pura –

+0

scusami, ma cosa fa il 'number_format' sulla terza riga? Come perché è qui, ho letto la definizione di php.net, ancora nessun indizio. in realtà la tua funzione funziona bene senza di essa e genera un errore se includo la terza riga. –

3

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

string money_format (string $format , float $number) 

es:

// 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 

Nota: Il function money_format() è definita solo se il sistema ha s capacità trfmon. Ad esempio, Windows non lo fa, quindi money_format() non è definito in Windows.

Nota: La categoria LC_MONETARY delle impostazioni locali influenza il comportamento di questa funzione. Utilizzare setlocale() per impostare le impostazioni internazionali predefinite appropriate prima di utilizzare questa funzione.

Usa 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

Non so cosa ho fatto di sbagliato ma in realtà non emette nulla. userò il metodo da @Dasun invece.grazie comunque –

+0

@LionLiu: money_format non funzionerà con le finestre, ho aggiornato la risposta per favore controlla. –

Problemi correlati