2013-07-22 699 views
15

Tôi có điều nàyThêm dấu phẩy như hàng ngàn tách và dấu chấm dấu chấm trong php

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

sự trở lại của $ tổng số phụ là "1234567.00" làm thế nào để thay đổi định nghĩa của $ tổng số phụ, làm cho nó như thế này "1,234,567.00"

+3

number_format (' '$ Ví dụ, 2,,','); sẽ làm điều đó cho bạn .. – Reshil

+0

Vì bạn mới ở đây, hãy chấp nhận câu trả lời (đánh dấu) để giải quyết vấn đề của bạn. Bỏ phiếu (mũi tên lên) (các) câu trả lời cung cấp (các) thông tin hoặc giúp đỡ bạn. Bỏ phiếu xuống (mũi tên xuống) (các) câu trả lời là giả mạo. – Techie

+0

Gợi ý: nếu bạn muốn sử dụng dấu phân cách dài hơn 1 ký tự (ví dụ: " ") sẽ không hoạt động trong php <5.4.0, thật không may .. – UbiQue

Trả lời

27

dưới đây sẽ ra 1,234,567.00

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

Cú pháp

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

Nhưng tôi khuyên bạn nên sử dụng money_format mà sẽ định dạng một số như là một chuỗi tiền tệ

+0

hoạt động, cảm ơn rất nhiều –

4

Bạn có nhiều lựa chọn, nhưng money_format có thể làm các trick cho bạn.

// Example: 

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

// Output: 

"1,00,000.00" 

Xin lưu ý rằng money_format() chỉ được xác định nếu hệ thống có khả năng strfmon. Ví dụ, Windows không, vì vậy nó không được xác định trong Windows.

cuối cùng chỉnh sửa: Đây là một PHP Thực hiện tinh khiết sẽ làm việc trên bất kỳ hệ thống:

$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

không biết tôi đã làm gì sai nhưng nó thực sự không xuất ra bất cứ thứ gì. tôi sẽ sử dụng phương thức từ @Dasun thay thế. cảm ơn anyway –

+0

Kiểm tra xem thực thi PHP thuần túy của tôi –

+0

có cho phép tôi không, nhưng 'number_format' trên dòng thứ ba làm gì? Giống như tại sao nó ở đây, tôi đọc định nghĩa php.net, vẫn không có đầu mối. thực sự chức năng của bạn đang hoạt động tốt mà không có nó, và ném một lỗi nếu tôi bao gồm dòng thứ ba. –

3

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

string money_format (string $format , float $number) 

ví dụ:

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

Lưu ý: Các function money_format() chỉ được xác định nếu hệ thống có s khả năng trfmon. Ví dụ, Windows không, vì vậy money_format() là không xác định trong Windows.

Lưu ý: Danh mục LC_MONETARY của cài đặt ngôn ngữ, ảnh hưởng đến hành vi của chức năng này. Sử dụng setlocale() để đặt thành ngôn ngữ mặc định thích hợp trước khi sử dụng chức năng này.

Sử dụng 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

Tôi không biết những gì tôi đã làm sai, nhưng nó thực sự không sản xuất bất cứ điều gì. tôi sẽ sử dụng phương thức từ @Dasun thay thế.thanks anyway –

+0

@LionLiu: money_format sẽ không hoạt động với các cửa sổ, tôi đã cập nhật câu trả lời, vui lòng kiểm tra. –