PHP中的sprintf()函數(shù)的學(xué)習(xí)研究筆記
sprintf
將字串格式化。
語法: string sprintf(string format, mixed [args]...);
傳回值: 字串
函式種類: 資料處理
內(nèi)容說明
本函式用來將字串格式化。參數(shù) format 是轉(zhuǎn)換的格式,以百分比符號 % 開始到轉(zhuǎn)換字符為止。而在轉(zhuǎn)換的格式間依序包括了
1. 填空字元。0 的話表示空格填 0;空格是內(nèi)定值,表示空格就放著。
2. 對齊方式。內(nèi)定值為向右對齊,負(fù)號表向左對齊。
3. 欄位寬度。為最小寬度。
4. 精確度。指在小數(shù)點后的浮點數(shù)位數(shù)。
型態(tài),見下表
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-轉(zhuǎn)換字符=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-% 印出百分比符號,不轉(zhuǎn)換。 b 整數(shù)轉(zhuǎn)成二進(jìn)位。 c 整數(shù)轉(zhuǎn)成對應(yīng)的 ASCII 字元。 d 整數(shù)轉(zhuǎn)成十進(jìn)位。 f 倍精確度數(shù)字轉(zhuǎn)成浮點數(shù)。 o 整數(shù)轉(zhuǎn)成八進(jìn)位。 s 整數(shù)轉(zhuǎn)成字串。 x 整數(shù)轉(zhuǎn)成小寫十六進(jìn)位。 X 整數(shù)轉(zhuǎn)成大寫十六進(jìn)位。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
例子
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
使用范例
<?$money1 = 68.75;$money2 = 54.35;$money = $money1 + $money2;// 此時變數(shù) $money 值為 '123.1';$formatted = sprintf ('%01.2f', $money);// 此時變數(shù) $ formatted 值為 '123.10'?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
這個 %01.2f 是什么意思呢?
首先 這個 % 符號是開始的意思,他寫在最前面表示指定格式要開始了。 也就是 '起始字符', 直到出現(xiàn) '轉(zhuǎn)換字符' 為止,就算格式終止。
然后 跟在 % 符號 后面的是 0 這個零是 '填空字元' 表示,如果位置空著 就用0來填滿。在 0 后面的是 1 這個 1 是規(guī)定,小數(shù)點前面的數(shù)字占位要有1位以上。
如果把 1 改成 2 如果 $money 的值為 1.23 ,則 $formatted 的值將為 01.23因為,在小數(shù)點前面的數(shù)字只占了1位,按照上面所規(guī)定的格式,小數(shù)點前數(shù)字應(yīng)該占2位,現(xiàn)在只有1位,所以,用0來填滿。
到目前,在 %01 后面的 .2 (點2) 就很好理解了,它的意思是,規(guī)定,小數(shù)點后的數(shù)字,必需占2位. 如果這時候,$money 的值為 1.234,則 $formatted 的值將為 1.23。為什么 4 不見了呢? 因為,在小數(shù)點后面 按照上面的規(guī)定,必需且僅能占2位。 可是 $money 的值中,小數(shù)點占了3位,所以,4 被去掉了,只剩下 23。
最后,以 f '轉(zhuǎn)換字符' 結(jié)尾,其他轉(zhuǎn)換字符請自行參考上面的轉(zhuǎn)換字符列表。
關(guān)于對齊
如果在 % 起始符號后面 加上 - (負(fù)號) 則,將會把數(shù)字以向右對齊的方式進(jìn)行處理。
列子
<?$money = 1.4;$formatted = sprintf ('%-02.2f', $money);echo $formatted;?>
這時候,$formatted 將不會再是 01.40 而是 1.400
