у меня есть это
$example = "1234567" $subtotal = number_format($example, 2, '.', '');
возврат $ "1234567.00"
– "1234567.00"
как изменить определение $ subtotal, сделать так, как это "1,234,567.00"
Ниже выйдет 1 1,234,567.00
$example = "1234567"; $subtotal = number_format($example, 2, '.', ','); echo $subtotal;
Синтаксис
string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )
Но я советую вам использовать money_format, который будет форматировать число в виде строки валюты
У вас много вариантов, но money_format может сделать трюк для вас.
// Example: $amount = '100000'; setlocale(LC_MONETARY, 'en_IN'); $amount = money_format('%!i', $amount); echo $amount; // Output: "1,00,000.00"
Обратите внимание, что money_format()
определяется только в том случае, если система имеет возможности strfmon
. Например, Windows не работает, поэтому она не определена в Windows.
Окончательное редактирование: вот чистая реализация PHP, которая будет работать в любой системе:
$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. }
Ссылка: http://php.net/manual/en/function.money-format.php
string money_format ( string $format , float $number )
например:
// 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
Примечание . Функция money_format () определяется только в том случае, если система имеет функции strfmon. Например, Windows не делает этого, поэтому money_format () не определен в Windows.
Примечание. Категория LC_MONETARY настроек локали влияет на поведение этой функции. Используйте setlocale (), чтобы установить соответствующую локаль по умолчанию перед использованием этой функции.
Используйте 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