2012-07-17 52 views
2

我有一個變量$counter返回下列整數如何前導零和逗號添加了一些在PHP

4 

我想用數字格式或類似的讓我的整數顯示格式爲:

000,000,004 

我該怎麼做?

+0

http://stackoverflow.com/questions/1699958/formatting-a-number-的可能重複with-leading-zeros-in-php – 2012-07-17 08:55:07

回答

4

您可以使用sprintf()str_split()在一起,就像這樣:

$number = 4; 
$formattedNumber = sprintf("%09d", $number); 
$formattedNumber = str_split($formattedNumber, 3); 
$formattedNumber = implode(",", $formattedNumber); 
echo $formattedNumber; 

編輯:

下面是一個使用str_pad()上面的代碼中的一個殺手變種:

function formatNumber($number, $desiredLength, $separatorLength) { 
    $formattedNumber = str_pad($number, $desiredLength, "0", STR_PAD_LEFT); 
    while(strlen($formattedNumber) % $separatorLength){ 
     $formattedNumber = " " . $formattedNumber; 
    } 
    $formattedNumber = str_split($formattedNumber, $separatorLength); 
    $formattedNumber = implode(",", $formattedNumber); 
    return trim($formattedNumber); 
} 
echo formatNumber(  4, 9, 3); // 000,000,004 -- fixed width 
echo formatNumber(4000000000, 9, 3); // 4,000,000,000 -- fixed width; overflow handled automatically 
echo formatNumber(  4, 0, 3); // 4    -- no width specified 
echo formatNumber(  4000, 0, 3); // 4,000   -- no width specified; comma added automatically 
+0

對於大於「1000000000」的數字無法正常工作。 (提供100,000,000,0而不是1,000,000,000)。 – Artefact2 2012-07-17 08:59:54

+0

@ Artefact2:查看修訂後的答案。 – 2012-07-17 09:42:34

2

你可以做的一種方法是sprintf

sprintf('%03d', $counter); 

另一個是使用str_pad

str_pad($counter, 3, "0", STR_PAD_LEFT); 
0
$string = "4"; 
echo str_pad($string, 9, "0", STR_PAD_LEFT); // prints "000000004" (9-digit number) 

/* 
    9 = How long the returned value should be. Must be bigger than length of $string 
    0 = String to add 
    STR_PAD_LEFT = On which side to add zeros? Left, in the case 
*/ 
0

使用number_format

$number = 1; 
echo number_format($number/1000, 3, ",", "."); // 2 decimals, "," and "." as seperators 
// gives 0,001