天天看點

php中的sprintf的應用

sprintf

将字串格式化。

文法: string sprintf(string format, mixed [args]...);

傳回值: 字串

函式種類: 資料處理

内容說明

本函式用來将字串格式化。參數 format 是轉換的格式,以百分比符号 % 開始到轉換字元為止。而在轉換的格式間依序包括了

1. 填空字元。0 的話表示空格填 0;空格是内定值,表示空格就放着。

2. 對齊方式。内定值為向右對齊,負号表向左對齊。

3. 欄位寬度。為最小寬度。

4. 精确度。指在小數點後的浮點數位數。

型态,見下表

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

轉換字元

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

% 印出百分比符号,不轉換。

b 整數轉成二進位。

c 整數轉成對應的 ASCII 字元。

d 整數轉成十進位。

f 倍精确度數字轉成浮點數。

o 整數轉成八進位。

s 整數轉成字串。

x 整數轉成小寫十六進位。

X 整數轉成大寫十六進位。

例子

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

使用範例

<?

$money1 = 68.75;

$money2 = 54.35;

$money = $money1 + $money2;

// 此時變數 $money 值為 "123.1";

$formatted = sprintf ("%01.2f", $money);

// 此時變數 $ formatted 值為 "123.10"

?>

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

這個 %01.2f 是什麼意思呢?

首先 這個 % 符号是開始的意思,他寫在最前面表示指定格式要開始了。 也就是 "起始字元", 直到出現 "轉換字元" 為止,就算格式終止。

然後 跟在 % 符号 後面的是 0 這個零是 "填空字元" 表示,如果位置空着 就用0來填滿。

在 0 後面的是 1 這個 1 是規定,小數點前面的數字占位要有1位以上。

如果把 1 改成 2 如果 $money 的值為 1.23 ,則 $formatted 的值将為 01.23

因為,在小數點前面的數字隻占了1位,按照上面所規定的格式,小數點前數字應該占2位,現在隻有1位,是以,用0來填滿。

到目前,在 %01 後面的 .2 (點2) 就很好了解了,它的意思是,規定,小數點後的數字,必需占2位. 如果這時候,$money 的值為 1.234,則 $formatted 的值将為 1.23。

為什麼 4 不見了呢? 因為,在小數點後面 按照上面的規定,必需且僅能占2位。 可是 $money 的值中,小數點占了3位,是以,4 被去掉了,隻剩下 23。

最後,以 f "轉換字元" 結尾,其他轉換字元請自行參考上面的轉換字元清單。

關于對齊

如果在 % 起始符号後面 加上 - (負号) 則,将會把數字以向右對齊的方式進行處理。

列子

<?

$money = 1.4;

$formatted = sprintf ("%-02.2f", $money);

echo $formatted;

?>

這時候,$formatted 将不會再是 01.40 而是 1.400